Javascript Prototype继承-访问Prototype属性内的道具
我对原型继承的理解是,如果属性是在对象本身中定义的,那么就定义了该属性的值 如果属性未在对象中定义,那么它将查找prototype链,我将其理解为在Javascript Prototype继承-访问Prototype属性内的道具,javascript,prototypal-inheritance,Javascript,Prototypal Inheritance,我对原型继承的理解是,如果属性是在对象本身中定义的,那么就定义了该属性的值 如果属性未在对象中定义,那么它将查找prototype链,我将其理解为在a.prototype下的查找,并返回值 在上述情况下,它将打印未定义,而我希望打印10 您需要: a = function() {} a.prototype.b = 10 console.log(a.b) a是函数本身(也是一个对象),而原型链用于构造函数a初始化的实例 另一个例子: console.log(new a().b); a是一个函数
a.prototype
下的查找,并返回值
在上述情况下,它将打印未定义
,而我希望打印10
您需要:
a = function() {}
a.prototype.b = 10
console.log(a.b)
a
是函数本身(也是一个对象),而原型链用于构造函数a
初始化的实例
另一个例子:
console.log(new a().b);
a
是一个函数,也是一个对象,您可以向函数添加一个属性。prototype
,然后a
的prototype链可以工作。您需要:
a = function() {}
a.prototype.b = 10
console.log(a.b)
a = function() {};
Function.prototype.b = 10;
console.log(a.b); // this time you will get 10
a
是函数本身(也是一个对象),而原型链用于构造函数a
初始化的实例
另一个例子:
console.log(new a().b);
a
是一个函数,也是一个对象,您向函数添加一个属性。prototype
,然后a
的prototype链工作
a = function() {};
Function.prototype.b = 10;
console.log(a.b); // this time you will get 10
a
是一个函数
var a = function() {};
a
的所有实例都以属性值.b
为10开始
a.prototype.b = 10;
a
不是a的实例,因此它只是function(){}
,没有属性b,因此日志未定义
console.log(a.b) //undefined
现在我们有了一个实例,结果记录了10
a
是一个函数
var a = function() {};
a
的所有实例都以属性值.b
为10开始
a.prototype.b = 10;
a
不是a的实例,因此它只是function(){}
,没有属性b,因此日志未定义
console.log(a.b) //undefined
现在我们有了一个a的实例,结果记录了10个。只有类/对象/函数的实例继承自它们的
prototype
属性。要访问函数原型中的属性,可以使用functionName.prototype.propertyname。或者您可以创建一个新的内联实例
var A = new a();
console.log(A.b);//10;
应该是:
console.log(a.b);
更多信息。只有类/对象/函数的实例继承自其
原型
属性。要访问函数原型中的属性,可以使用functionName.prototype.propertyname。或者您可以创建一个新的内联实例
var A = new a();
console.log(A.b);//10;
应该是:
console.log(a.b);
更多信息。
a.prototype
不在a
的原型链中a.prototype
不是a
的原型。prototype不在a
的原型链中a.prototype
不是a
的原型“原型只应用于它们的父函数(/class)”“还不清楚这意味着什么。@Felix Kling“…当它们的父函数被实例化时。”。这意味着,只要您没有指定类的结果或使用“new”关键字,原型就不会应用于类本身prototype
永远不会“应用”于函数/类本身(也不确定“应用”原型意味着什么)。我相信您知道它是如何工作的,但是描述没有多大意义。使用类从原型继承的应用元素。太糟糕了,对于“applicated”这个词没有RFC(对于像…这样的词有RFC)。只是做了一个小小的补充:)“原型只应用于它们的父函数(/class)”这并不清楚它的意思。@Felix Kling“…当它们的父函数被实例化时。”。这意味着,只要您没有指定类的结果或使用“new”关键字,原型就不会应用于类本身prototype
永远不会“应用”于函数/类本身(也不确定“应用”原型意味着什么)。我相信您知道它是如何工作的,但是描述没有多大意义。使用类从原型继承的应用元素。太糟糕了,对于“applicated”这个词没有RFC(对于像…这样的词有RFC)。只是做了一个小小的补充:)注意(如我的回答所示)console.log(a.prototype.b)代码>也可以工作。还请注意,函数.prototype
修改所有未来函数的原型,而a.prototype
只修改a
@thisname betterbeavailable”控制台.log(a.prototype.b);
也可以工作。“显然,这对a.prototype.b=10
没有意义。请注意(如我的回答中所示)console.log(a.prototype.b);
也可以工作。还要注意的是Function.prototype
修改了所有未来函数的原型,而a.prototype
只修改了a
@thisnambetterbeavailable“console.log(a.prototype.b);
也可以工作。”显然,这对a.prototype.b=10没有意义。