美文网首页
js原型链中的__proto__和prototype

js原型链中的__proto__和prototype

作者: 一瓣山河 | 来源:发表于2019-03-12 21:54 被阅读0次

在学习js原型链 的过程中,大家肯定碰到过属性__proto__prototype,下面就举例说明下构造函数、隐式原型(__proto__)、原型对象(prototype)、实例的关系:
(感兴趣的小伙伴可以在命令行里敲入以下代码验证。)

function F(name){
  this.name = name
}
var f = new F('jack');

// 构造器
F.prototype.constructor === F; 
F.__proto__ === Function.prototype;
Function.prototype.__proto__ === Object.prototype; 

// 实例
f.__proto__ === F.prototype;
F.prototype.__proto__ === Object.prototype;

Object.prototype.__proto__ === null; 

总结:

  • 对象都有__proto__属性,称为隐式原型,一个对象的隐式原型指向构造该对象的构造函数的原型(prototype);
  • Object.prototype.__proto__ === null 是true;
  • 函数(Function)变量比较特殊,因为函数也是对象,它不仅有__proto__属性,还有prototype属性。
  • prototype属性是一个指针,指向一个对象,这个对象的用途就是包含所有实例共享的属性和方法。原型对象也有一个属性,叫做constructor,这个属性包含了一个指针,指向原构造函数。

相关文章

网友评论

      本文标题:js原型链中的__proto__和prototype

      本文链接:https://www.haomeiwen.com/subject/rjeopqtx.html