Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Prototype继承-访问Prototype属性内的道具_Javascript_Prototypal Inheritance - Fatal编程技术网

Javascript 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是一个函数

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

如果属性未在对象中定义,那么它将查找prototype链,我将其理解为在
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没有意义。