原型和原型链

2019-04-16  本文已影响0人  i5yue

原型和原型链

原型的特性
function Foo() {

}

const obj = new Foo();

console.log(Foo.prototype === obj.__proto__);
console.log(obj.constructor === Foo);
console.log(Foo.prototype.__proto__ === Object.prototype);
console.log(Object.prototype.__proto__ === null);
console.log(Object.constructor === Function);

true true true true true
原型链的形成

每个对象拥有一个原型对象,通过 _proto_ 指针指向上一个原型 ,并从中继承方法和属性,同时原型对象也可能拥有原型,这样一层一层,最终指向 null,这种关系被称为原型链

原型链图片.jpg
instanceof 运算符

instanceof运算符返回一个布尔值,表示对象是否为某个构造函数的实例。 原理就是一层一层查找 _proto_,如果和 constructor.prototype 相等则返回 true,如果一直没有查找成功则返回 false。

构造函数、原型和实例之间的关系

每个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实例都包含一个原型对象的指针。

原型铁三角关系.png

(1)实例对象由构造函数new产生;
(2)构造函数的原型属性与实例对象的原型对象均指向原型
(3)原型对象中有一个属性constructor指向对应的构造函数

上一篇下一篇

猜你喜欢

热点阅读