原型继承 - 在原型中访问道具 属性

Prototype inheritance - access props inside prototype property

a = function() {}
a.prototype.b = 10
console.log(a.b)

我对原型继承的理解是,如果属性是在对象本身中定义的,那么prop的值就被定义了。

如果对象中没有定义 属性,那么它会查找原型链,我将其理解为在 a.prototype 和 returns 值下查找。

在上述情况下,它打印 undefined 而我期望 10

你需要:

console.log(new a().b);

a 是函数(也是一个对象)自身,而原型链是针对构造函数 a.

初始化的实例

另一个例子:

a = function() {};
Function.prototype.b = 10;
console.log(a.b); // this time you will get 10

a 是一个函数,也是一个对象,您将 属性 添加到 Function.prototype,然后 a 的原型链起作用。

var a = function() {};

a是函数

a.prototype.b = 10;

a 的所有实例都以 属性 值 .b 10 开头。

console.log(a.b) //undefined

a 不是 a 的实例,因此只有 function(){} 没有 属性 b,因此记录未定义。

var A = new a();
console.log(A.b);//10;

现在我们有一个 a 的实例,因此记录了 10。

只有 classes/objects/functions 的实例继承自它们的 prototype 属性。要访问函数原型中的属性,您可以使用 functionName.prototype.propertyname。或者您可以内联创建一个新实例。

console.log(a.b);

应该是:

console.log(new a().b);
//OR
console.log(a.prototype.b);

更多关于 prototypes (mdn)