js 中对象的特性

来源:互联网 发布:python io模块 编辑:程序博客网 时间:2024/05/21 09:25

用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>
0 0
原创粉丝点击