描述
几乎所有的 JavaScript 对象都是 Object 的实例;一个典型的对象继承了Object.prototype的属性(包括方法),尽管这些属性可能被遮蔽(也被称为覆盖)。然而,一个Object可能是故意创建的,这是不确定的(例如通过Object.create(null)),或者它可能被改变,所以这不再是准确的(例如Object.setPrototypeOf)。
改变Object原型,会通过原型链,而改变所有对象;除非这些属性和方法被其他对原型链更里层的改动所覆盖。这提供了一个非常强大的、但有潜在危险的机制,来覆盖或扩展对象行为。
属性
Object.prototype.constructor 特定的函数,用于创建一个对象的原型
方法
Object.prototype.hasOwnProperty 返回一个布尔值 ,表示某个对象是否含有指定的属性,而且此属性非原型链继承的。
Object.prototype.isPrototypeOf 返回一个布尔值,表示指定的对象是否在本对象的原型链中。
Object.prototype.propertyIsEnumerable 判断指定属性是否可枚举,内部属性设置参见 ECMAScript [[Enumerable]] attribute 。
Object.prototype.toString 返回对象的字符串表示。
Object.prototype.unwatch 移除对象某个属性的监听。
Object.prototype.valueOf 返回指定对象的原始值。
Object.prototype.watch 给对象的某个属性增加监听。
Object方法
Object.assign(target, …sources) 将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。
target: 目标对象。 sources: 源对象。 针对深拷贝,需要使用其他方法,因为 Object.assign()拷贝的是属性值。假如源对象的属性值是一个指向对象的引用,它也只拷贝那个引用值。
注意,Object.assign 会跳过那些值为 null 或 undefined 的源对象
Object.create(proto[, propertiesObject]) 使用指定的原型对象及其属性去创建一个新的对象。