美文网首页
【标准库】Object

【标准库】Object

作者: 南方帅 | 来源:发表于2019-03-04 10:53 被阅读0次

    其中 属性描述对象

    • 使用Object.prototype.toString() 可以判断对象的类型 第二个就是该值的构造函数
    Object.prototype.toString.call(2) // "[object Number]"
    Object.prototype.toString.call('') // "[object String]"
    Object.prototype.toString.call(true) // "[object Boolean]"
    Object.prototype.toString.call(undefined) // "[object Undefined]"
    Object.prototype.toString.call(null) // "[object Null]"
    Object.prototype.toString.call(Math) // "[object Math]"
    Object.prototype.toString.call({}) // "[object Object]"
    Object.prototype.toString.call([]) // "[object Array]"
    

    改造一哈

    var type = function (o){
      var s = Object.prototype.toString.call(o);
      return s.match(/\[object (.*?)\]/)[1].toLowerCase();
    };
    
    ['Null',
     'Undefined',
     'Object',
     'Array',
     'String',
     'Number',
     'Boolean',
     'Function',
     'RegExp'
    ].forEach(function (t) {
      type['is' + t] = function (o) {
        return type(o) === t.toLowerCase();
      };
    });
    
    type.isObject({}) // true
    type.isNumber(NaN) // true
    type.isRegExp(/abc/) // true
    
    • Object.keys() && Object.getOwnPropertyNames()

    两个都可以用来遍历对象的属性。只有当两个传入参数是不可枚举的属性的时候 返回不一样 因为getOwnPropertyNames 会遍历全部属性。keys 会根据enumerable 描述来遍历。

    var a = ['Hello', 'World'];
    
    Object.keys(a) // ["0", "1"]
    Object.getOwnPropertyNames(a) // ["0", "1", "length"]
    

    关于属性描述对象的

    {
      value: 123,                  //  属性值
      writable: false,            //  是否可写
      enumerable: true,      //  是否可以遍历
      configurable: false,    //  可配置性
      get: undefined,          //   取值函数   和value 不能同时存在
      set: undefined            //  存值函数
    }
    
    • getOwnPropertyDescriptor
    • getOwnPropertyNames
    • defineProperty
    • propertyIsEnumerable
    • 拷贝冻结 preventExtensions isExtensible seal isSealed freeze isFrozen
      不能新增 、 不行新增 删除 、不能新增 删除 修改

    相关文章

      网友评论

          本文标题:【标准库】Object

          本文链接:https://www.haomeiwen.com/subject/qjlhuqtx.html