你的位置:首页 > Java教程

[Java教程]js 中对象的特性


用Object.definedproperties 一次性添加或修改多个属性的特性和值。

 1 <script> 2   var obj ={} 3   Object.defineProperties(obj,{ 4     x:{value:1,writalbe:true,configurable:true,enumerable:true}, 5     y:{value:2,configurable:true} 6   }) 7   console.log(obj.x) //=>1 8   console.log(obj.y) //=>2 9   console.log(Object.getOwnPropertyDescriptor(obj,"x"))//得到属性的描述 value:1 writable:true configurable:true, enumerable:true10   console.log(Object.getOwnPropertyDescriptor(obj,"y"))    //  value:2 writable:false configurable:true, enumerable:false  11   obj.z=3    //这个z是通过对象字面量的方式创建的12   console.log(Object.getOwnPropertyDescriptor(obj,"z"))//所以所有的属性特性都为true13 </script>

检测对象是否是另一个对象的原型(或者处于原型链中)

1 <script>2   var obj={3   }      //此处创建了一个空对象4   var obj1 =Object.create(obj)  //用object.create创建了一个新对象,把obj作为obj1的原型5   console.log(obj.isPrototypeOf(obj1))   //=> true 此时返回值就true,因obj是obj1的原型6   console.log(Object.prototype.isPrototypeOf(obj))//=>true 因为object.prototype是顶级对象,是对象原型上的原型7   console.log(Object.prototype.isPrototypeOf(obj1))//=>true 也是对象上的原型8 </script>

对象类class是一个标识对象类型的字符串

ECMAscript3和ECMAscript5都没有定义此方法,可以通过顶级对象的toString()方法

js的内建对象都带有toSting方法,所以要用一个CALL回调

代码如下,对何标识对象类型的字符串:

 1 <script> 2   function classof(obj){ 3     if(obj === null){ 4       return null 5      } 6     if(obj === undefined){ 7       return undefined 8      } 9     return Object.prototype.toString.call(obj).slice(8,-1)10    }11   var x = null;     //=>null12   var x = undefined;   //=> undefined13   var x =true       //=> boolean14   var x = 1234;     //=>  number15   var x = "this is"    //=> string16   var x = new Array()   //=> arry17   var x = new Date()   //=>  date18   console.log(classof(x))  19 </script>