JavaScript 原型(prototype)函数问题

标签 javascript prototype

我构建了一个构造函数,并向其原型(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/

相关文章:

javascript - 在 JavaScript 中说 "null is a literal"是什么意思?

javascript - 返回溢出内容中的子页面 anchor

javascript - 如何在 vue.js 中单击时切换类?

node.js - express.js 实例化 Controller 中出现意外值 'this'

javascript - 使用 String.prototype 扩展 String 时无法覆盖 javascript 中的 "this"

javascript - jQuery Accordion 导航菜单

javascript - ajax开发的问题

javascript - 使用 new 关键字的函数原型(prototype)继承

javascript - 在匿名范围内使用 Javascript Prototype 对象

javascript - 为什么我的对象没有构造函数?