Object
是 JavaScript 的一种数据类型,它用于存储各种键值集合和更复杂的实体。
在 JavaScript 中,几乎所有的对象都是 Object
类型的实例,它们都会从 Object.prototype
继承属性和方法,虽然大部分属性都会被覆盖(shadowed)或者说被重写了(overridden)。
除此之外,Object
还可以被故意的创建,但是这个对象并不是一个“真正的对象”(例如:通过 Object.create(null)
),或者通过一些手段改变对象,使其不再是一个“真正的对象”(比如说:Object.setPrototypeOf
)。
通过原型链,所有的 object
都能观察到 Object 原型对象(Object prototype object)的改变,除非这些受到改变影响的属性和方法沿着原型链被进一步的重写。尽管有潜在的危险,但这为覆盖或扩展对象的行为提供了一个非常强大的机制。
Object
构造函数为给定的参数创建一个包装类对象(object wrapper),具体有以下情况:
- 如果给定值是
null
或undefined
,将会创建并返回一个空对象 - 如果传进去的是一个基本类型的值,则会构造其包装类型的对象
- 如果传进去的是引用类型的值,仍然会返回这个值,经他们复制的变量保有和源对象相同的引用地址
当以非构造函数形式被调用时,Object
的行为等同于 new Object()
。
Object.keys()
返回一个包含所有给定对象自身可枚举属性名称的数组
Object.defineProperty()
给对象添加一个属性并指定该属性的配置。