我正在通过各种教程很快学习javascript,而我刚买了一本中高级书。我很快就意识到我其实什么都不知道。因此,我需要知道为什么这个原型方法不会返回新值,或者当我在函数Ninja()的第一个声明之外执行时,原型方法会发生什么。
...此返回不能返回属性' swingSword' 我有一个请求虽然抱歉。你能用复杂的语言告诉我说实例化,继承,异步或其他什么,还能用简单的英语吗?
function Ninja() {
this.swingSword = function() {
return true;
};
}
Ninja.prototype.swingSword = function() {
return false;
};
var ninja = new Ninja();
console.log(ninja.prototype.swingSword());, ///Edit "Calling the prototype method. Not the instance."
答案 0 :(得分:0)
ninja.prototype.swingSword()
无效,因为ninja.prototype
为undefined
。我认为你的意思是ninja.swingSword()
。
首先我们需要了解,JavaScript将首先在当前对象中查找属性。只有它找不到,才会进入原型链。
在这种情况下,由于您将swingSword
添加到this
(当前实例),因此当您调用ninja.swingSword()
时,将执行当前实例中的swingSword
。< / p>
答案 1 :(得分:0)
问题在于:ninja.prototype.swingSword()
Yous必须称之为:ninja.swingSword()
答案 2 :(得分:0)
如果你想显式调用prototype方法,我相信这就是语法:
var ninja = new Ninja();
console.log(Ninja.prototype.swingSword.call(ninja), "Calling the instance method, not the prototype method.");
所以原型并没有挂在ninja
变量上。它悬挂在Ninja
类型上。