js 原型链,原型,实例,构造函数 的关系

前端之家收集整理的这篇文章主要介绍了js 原型链,原型,实例,构造函数 的关系前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
function a(){
  this.name = "lili";
}

var b = new a();

var c = a.prototype;

var d = b.proto;

var e = c.constructor;

var f = c.proto;

var g = b.constructor;

  • 只有构造函数才有 prototype 属性, 值是构造函数的老爸 (原型对象); a.prototype === c;
  • g === a; 实例的 constructor 指向 它的构造函数 (老爸);
  • 实例可以通过__proto__ 访问到它的爷爷(原型); a.prototype === c === b.__proto__ ;
  • 原型 也是某个原始对象的实例,所以可以通过 proto 访问到 Object 原型对象;f === Object;
  • 原型 可以 通过 constructor 访问到它的儿子 (构造函数a);
  • 通过__proto__ 访问到自己原型的方式,可以组成一个链,就是原型链 b.__proto__.proto__ === Objcet;
  • 因为 Object 对象 proto 为null了,所以应了那句话:js 中一切皆对象; all from Object ;

一个神奇的事情:
实例通过__proto__ 访问到 原型;通过 constructor 访问到 构造函数
构造函数 通过 prototype 也访问到原型
原型通过 constructor 访问到的并不是自己的构造函数,而是自己的构造函数

function a(){
this.name = "lili";
}
var b = new a();
var c = a.prototype;

a.prototype === b.__proto__ === c;

c.constructor === b.constructor === a;

猜你在找的程序笔记相关文章