原型继承 - 在原型中访问道具 属性
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)。
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)。