【发布时间】:2016-12-01 13:59:56
【问题描述】:
我已经构建了一个构造函数并在其原型中添加了 3 个函数。 当我尝试从原型调用一个函数时,我得到了这个错误
TypeError: undefined is not a function (evalating '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);
【问题讨论】:
-
如果你一个一个添加它们,这甚至可以工作 (
SignalFire.prototype.addLogs = function ...)。但是由于您要彻底替换整个prototype对象,因此引用已损坏。 -
在你的 fireOne.addLogs(8) 之前创建你的对象
-
这是你代码的顺序。在添加原型之前创建。将 var fireXXX = new SignalFire() 放在原型对象之后...
标签: javascript prototype