我构建了一个构造函数,并向其原型(prototype)添加了 3 个函数。 当我尝试从原型(prototype)调用函数时,出现此错误
类型错误:未定义不是函数(评估“fireOne.addLogs(8)”)
请有人告诉我我做错了什么。我无法弄清楚。
提前致谢
function SignalFire(ID, startingLogs){
this.fireID = ID;
this.logsLeft = startingLogs;
}
var fireOne = new SignalFire(1, 20);
var fireTwo = new SignalFire(2, 18);
var fireThree = new SignalFire(3, 24);
SignalFire.prototype = {
addLogs: function(numLogs){
this.logsLeft += numLogs;
},
lightFire: function(){
alert("Whoooooosh!");
},
smokeSignal: function(message) {
if (this.logsLeft < this.message.length / 10){
alert("Not enough fuel to send " +
"the current message!");
}
else {
this.lightFire();
var x = this.message.length;
for(var i = 0; i < x; i++){
alert("(((" + this.message[i] + ")))");
if (i % 10 === 0 && i !== 0){
this.logsLeft--;
}
}
}
}
};
fireOne.addLogs(8);
最佳答案
问题是你的代码的顺序。您可以在创建后添加内容。如果您在创建火焰之前添加原型(prototype),它将起作用。
function SignalFire(ID, startingLogs){
this.fireID = ID;
this.logsLeft = startingLogs;
}
SignalFire.prototype = {
addLogs: function(numLogs){
this.logsLeft += numLogs;
console.log(this.logsLeft);
}
};
var fireOne = new SignalFire(1, 20);
fireOne.addLogs(8);
关于JavaScript 原型(prototype)函数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40912578/