原型和原型链
在访问对象自身不包含的属性时,会从对象原型中搜索属性。
每个对象除了拥有自己的属性外,都包含一个隐式原型__proto__
属性。指向另一个对象(创建该对象的构造函数的显式原型prototype
),是对象的属性来源。
获取一个对象的原型:Object.getPrototypeOf(obj)
或 obj.__proto__
每个函数都拥有自己的prototype
属性。一个函数的prototype
含有一个constructor
属性,指向这个函数自己。Function.prototype.constructor===Function
隐式原型 | 显式原型 |
---|---|
__proto__ | prototype |
可以改变一个对象的原型,也可以设置为 null。 obj.__proto__=null
创建一个具有特定原型的对象:let obj =Object.create(proto, [propertiesObject])
它接收两个参数,第二个可选参数是属性描述符(不常用,默认是 undefined)。