JS对象属性操作之定义属性篇
JS对象属性操作之定义属性篇
前提说明:本篇为自学随记,可供JS自学者查看。
<!doctype html>
<html><head><title>Document</title></head><body><script type="text/javascript">//定义属性//1.通过(名:值)方式在对象结构体内定义属性 2.通过点运算符在对象结构体外定义属性 3.通过构造函数定义属性//ECMAScript 5中增加的两个静态函数,用来为指定对象定义属性:Object.defineProperty和Object.definePropertiesvar o1={x:1,y:2}document.write(o1.x+" "+o1.y);document.write("</br>");var o2={};o2.x=3;o2.y=4;document.write(o2.x+" "+o2.y);document.write("</br>");var o3=function(){this.x=5;this.y=6;}document.write(new o3().x+" "+new o3().y);document.write("</br>");//静态函数Object.defineProperty(object,propertyname,descriptor) 将新属性添加到对象,在对象没有指定的属性名称时执行此操作//object :必须参数,指定要添加或修改的对象,可以使js本地对象(用户自定义对象或内置对象)和DOM对象//propertyname:必须参数,要定义的属性名//descriptor:必须参数,描述属性特性var obj={};Object.defineProperty(obj,"newDateProperty",{value:101,writable:true,enumerable:true,configurable:true});//obj.newDateProperty=102; //修改属性值document.write(obj.newDateProperty+"</br>");//静态函数Object.defineProperties(object,descriptor) 添加多个或修改多个对象的现有属性var obj1={};Object.defineProperties(obj1,{newDateProperty:{value:110,writable:true,enumerable:true,configurable:true},newAccessorProperty:{set:function(x){this.newaccpropvalue=x;},get:function(){return this.newaccpropvalue;},enumerable:true,configurable:true}});obj1.newAccessorProperty=111;document.write(obj1.newDateProperty+"</br>");document.write(obj1.newAccessorProperty+"</br>");</script></body>
</html>