JS中的原型连

参考网址:https://www.jianshu.com/p/f8c7c55025fc

1.理解字面量,构造函数,构造函数实例的关系。

//只有构造函数有原型属性 - prototype,它是一个对象
// 1.字面量对象
var A = {};
console.log(A.prototype); // undefined
// 2.构造函数
var B = function (name) {
    this.name = name;
}
console.log(B.prototype); // {constructor: ƒ}
console.log(typeof B.prototype); // object
// 3.构造函数实例
var b = new B('top');
console.log(b.prototype); // undefined

//原型对象中有个constructor属性,constructor指向构造函数本身,也只有原型对象具有constructor属性
console.log(B.prototype.constructor === B); // true
console.log(b.constructor === B); // true

//所有的对象都有 __protp__属性,它也是个对象
console.log(B.__proto__); // ƒ () { [native code] }
console.log(b.__proto__ === B.prototype); // true
console.log(a.__proto__ === Object.prototype); // true

2.理解原型链

  原型链的核心就是当自身不存在的属性时,依赖对象的_proto_的指向,就一层层的扒出创建对象的构造函数,直至到Object时,就没有_proto_指向了。

console.log(Object.prototype.__proto__);   // null

下图为原型链查找流程图

原文地址:https://www.cnblogs.com/dadouF4/p/13330645.html