【标准库】Object

其中 属性描述对象

  • 使用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对象 (O大写) 所有其他对象都继承自这个对象。Object本身也是...
    Viaphlyn阅读 2,366评论 0 0
  • 来自深入理解ES6第十二章,由于最近业务中经常用到,记录一下 这里内容都太学术了,有一篇简单介绍Proxy作用的文...
    NowhereToRun阅读 1,045评论 0 1
  • 函数和对象 1、函数 1.1 函数概述 函数对于任何一门语言来说都是核心的概念。通过函数可以封装任意多条语句,而且...
    道无虚阅读 4,673评论 0 5
  • 概述 JavaScript提供了一个内部数据结构,用来描述一个对象的属性的行为,控制它的行为。这被称为“属性描述对...
    许先生__阅读 509评论 0 1
  • 龟速整理词,三不五时瞌睡再来个注意力不集中。天就黑了。该喝粥了。 最近都是独自吃饭。因此每每都是与人拼桌公食。说是...
    白日梦女一号阅读 321评论 0 0