解析js中的原型

一张图来说明:

原型链说明图

总结:

  1. 只有函数才拥有prototype属性,构造函数的.prototype为一个对象
  2. 每个对象都有一个隐式的原型属性[[prototype]], 但由于[[prototype]]是内部属性,不能访问,用 proto 代替, 浏览器实现存在兼容性
  3. 每个对象的 proto 指向了其构造函数的原型对象,形成原型链,因此对象可以访问到不属于其定义的属性

  4. Object.prototype 和 Function.prototype是由js引擎创建的, 引擎将Function.prototype.proto指向Object.prototype,Object.prototype.proto指向null

  5. Object.prototype 是所有对象的爸爸,所有对象都可以通过 proto 找到它

  6. Function.prototype 是所有函数的爸爸,所有函数都可以通过 proto 找到它

  7. 对象的 proto 指向原型, proto 将对象和原型连接起来组成了原型链, 所以准确的原型链描述应该是{}.proto.proto等等

  8. 所有的函数都可以认为是通过new Function出来的,所以所有函数都能通过原型链 proto 找到Function.prototype, Function本身也一样,即Function.proto === Function.prototype。

  9. Object和Function都是构造函数,所以Object也是Function的实例对象。Object.proto === Function.proto === Function.prototype

深度解析原型中的各个难点

-------------本文结束 感谢您的阅读-------------