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

Prototype inheritance - access props inside prototype property

本文关键字:原型 属性 继承 访问      更新时间:2023-09-26
a = function() {}
a.prototype.b = 10
console.log(a.b)

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

如果未在对象中定义该属性,则它会查找原型链,我将其理解为在a.prototype下查找并返回值。

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

var a = function() {};

a是一个函数

a.prototype.b = 10;

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

console.log(a.b) //undefined

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

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

现在我们有一个 a 的实例,结果记录了 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工作。

只有类/对象/函数的实例继承自其prototype属性。要访问函数原型中的属性,可以使用functionName.prototype.propertyname。或者,您可以内联创建新实例。

console.log(a.b);

应该是:

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

有关原型 (mdn( 的更多信息。