JS的原型链,这个图你没见过

版权声明:原创文章,未经博主允许禁止转载。欢迎点击头像上方“郭晓东的专栏”查看专栏 https://blog.csdn.net/hherima/article/details/83057834

想到Objective-C有个isa指针,对象的isa指向类,类的isa指向元类,元类的isa指向自己。正是有了isa指针,才有了强大的runtime功能。

那么,前端技术js也有自己的指向关系,这里借用《JavaScript高级编程》中的描述:

  1. 每个构造函数都有一个原型对象(prototype)
  2. 原型对象都包含一个指向构造函数的指针(constructor)
  3. 实例都包含一个指向原型对象的内部指针(__proto__指向prototype)

看到第1,2的时候,大脑中应该有个环形图像。结合下面代码,总结一下:

function Person(name){
 this.name=name; 
}
 Person.prototype.printName=function(){
	 alert(this.name);
 } 
var person1=new Person(‘Byron’); 
var person2=new Person('Frank');

有如下图:

每一个对象都有一个__proto__,只有函数对象才有prototype。整体上都是从左向右找原型。Object.prototype的__proto__是null

constructor指向了本身(图中灰色虚线)

参考1:从探究Function.__proto__===Function.prototype过程中的一些收获 

参考2:JavaScript prototype 使用介绍

猜你喜欢

转载自blog.csdn.net/hherima/article/details/83057834