prototype

作者: xgszl33614 | 来源:发表于2016-05-03 14:45 被阅读44次

var a = new Object();

  • Object, 即构造函数, 是函数。typeof Object == 'function' ;//true
  • Object.prototype, 即Object的原型, 是对象。typeof Object.prototype == 'object';//true

只有函数才有prototype属性,prototype != 原型

构造函数的prototype并不是构造函数的原型,只有Function.__proto__才能代表原型(Function.__proto__就是Function构造函数的原型),Function.prototype是用构造函数构造出来的实例对象的原型,

原型构成了原型链,原型链的根就是Object.prototype。根的原型为null

Object.prototype.__proto__;//null

proto

实现了ecma-262中的 [[Prototype]] ,这是一个内置属性,不可操作,每个实例对象内部都有,指向该对象的原型。
通常不建议使用 __proto__ 。只有一个地方建议:使用class时,直接定义 __proto__ 属性。
不过,用来理解原型还是不错的

原型获取和设置

可以使用Object.getPrototypeOf()Object.setPrototypeOf()来获取和设置对象的原型。

相关文章

网友评论

      本文标题:prototype

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