zoukankan      html  css  js  c++  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:true
    10     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"))//所以所有的属性特性都为true
    13 </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;          //=>null
    12      var x = undefined;     //=>  undefined
    13      var x =true              //=>  boolean
    14      var x  = 1234;          //=>   number
    15      var x = "this is"       //=> string
    16      var x = new Array()      //=>  arry
    17      var x = new Date()      //=>    date
    18     console.log(classof(x))   
    19 </script>

        

  • 相关阅读:
    【六校联合训练 省选 #20】快递
    IOError: cannot open resource
    [已解决]运行gunicorn失败:[ERROR] Connection in use 127.0.0.1 8080
    windows下通过navicat for mysql连接centos6.3-64bit下的MySQL数据库
    在centos7中使用yum安装mysql数据库并使用navicat连接
    centos出现“FirewallD is not running”怎么办
    [linux]centos7下解决yum install mysql-server没有可用包
    CentOS 7安装Python3
    flask——CSRFToken保护
    python 获取当前文件夹下所有文件名
  • 原文地址:https://www.cnblogs.com/Ziksang/p/5188865.html
Copyright © 2011-2022 走看看