美文网首页
【标准库】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