xieco

导航

原型与原型链

原型与原型链

JavaScript 只有一种结构:对象。每个对象(object)都有一个私有属性指向另一个名为原型(prototype)的对象。原型对象也有一个自己的原型,层层向上直到一个对象的原型为 null。null没有原型。

备注: 指向对象原型的属性并不是 prototype。它的名字不是标准的,但实际上所有浏览器都使用 __proto__。访问对象原型的标准方法是 Object.getPrototypeOf()。

{ __proto__ : ... }语法与 obj.__proto__ 访问器

一个形式为 __proto__: value 或 "__proto__": value 的属性定义并没有创建一个名称为 __proto__ 的属性。相反,如果提供的值是一个对象或 null 值,它将创建对象的 [[Prototype]] 指向该值(如果该值不是一个对象或 null,该对象不会被改变)。
{ __proto__: ... } 语法与 obj.__proto__ 访问器不同:前者是标准且未被弃用的。

__proto__ & prototype & constructor

__proto__ 属性是对象独有的,它由一个对象指向一个对象,即指向它的构造函数的prototype属性(这个属性的值为object或null),这个属性的终点是null(Object.prototype)

prototype是函数独有的属性,它由一个函数指向一个一个对象,它的含义是函数的原型对象,也就是它作为构造函数创建的实例的原型对象,即 f1.__proto__ === Foo.prototype

constructor属性是对象才拥有的,它是由一个对象指向一个函数,含义就是该对象的构造函数,Function()的构造函数是它自己,所以constructor的终点是Function()这个函数

posted on 2024-06-18 20:27  千叶の堕天聖黑猫  阅读(6)  评论(0编辑  收藏  举报