原型以及原型链

原型是 JS 中比较抽象的一个部分,下面通过尽可能多的图来解释这一点。

  • 首先明确一点,JS 中所有的函数 fn 都有 prototype 属性(显式原型),fn.prototype 指向该函数的原型。

  • 另外,所有对象 obj 都有 [[prototype]] 属性(隐式属性),很多浏览器将其命名为 proto ,obj.proto 它指向构造函数中的 prototype 属性。

var obj = {
    'name': 'hunter'
  };
console.log(obj.__proto__);//指向 Object.prototype
function F(name){
  this.name = name;
}
F.prototype.sayName = function(){
  console.log(this.name);
};
var f1 = new F('Hunter');
f1.sayName();//通过原型链 f1.__proto__  找到 F.prototype 对象中的 sayName 属性
console.log(f1.__proto__);//指向 F.prototype

所以,通过图可以知道,构造函数 F 新建的实例可以通过原型链来继承Object.prototype 中的一些方法,这使得我们的实例对象功能更强大。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容