想到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');

有如下图:

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

 

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

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

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

参考2:JavaScript prototype 使用介绍

相关文章:

  • 2021-10-17
  • 2021-08-21
  • 2021-11-12
  • 2021-12-26
  • 2022-01-30
  • 2021-10-19
猜你喜欢
  • 2021-09-12
  • 2021-05-10
  • 2021-08-18
  • 2022-12-23
  • 2021-09-22
  • 2022-01-21
相关资源
相似解决方案