JavaScript的原型链

举例

//每个构造函数都是Function的实例
var Obj = function(){};  
var o = new Obj();  

详解

  • 真正形成原型链的是每个对象的_proto_属性,而不是函数的prototype属性
  • 实例._proto_指向构造函数的prototype构造函数.prototype._proto_属性指向Object.prototype是个{},{}_proto_属性指向null
  • 构造函数._proto_Function.prototype,Function.prototype._proto_指向Object.prototype是个{},{}_proto_属性指向null
console.log(o.__proto__.__proto__);
//=>{},也就是构造函数.prototype.__proto_
console.log(Function.__proto__.__proto__);
//=> {}   
console.log(o.__proto__.__proto__.__proto__ );
//=== null
console.log(Function.prototype.__proto__==Obj.prototype.__proto__);

原型链的问题

  • 引用类型值的原型属性会被所有实例共享
  • 创建子类型的实例时,不能向父类的构造函数传递参数

demo地址

参考文章推荐:
图解Javascript原型链

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

推荐阅读更多精彩内容