javascript - 未捕获的类型错误 : Object #<Item> has no method 'calculateDps'

标签 javascript eclipse object

我试图在游戏中调用对象的方法,但不断收到此错误:“Uncaught TypeError: Object # has no method 'calculateDps'”,以下是相关代码:

    function Item(pBase, price){
        this.pBase = pBase;
        this.price = price;
        pMultiplier = 1;
        number = 0;

        calculateDps = function(){
            return this.pBase * pMultiplier * number;
        };
    };

    var cursor = new Item(.1,15);

    var calcDps = function(){
        return cursor.calculateDps();
    };

    calcDps();

最佳答案

calculateDps = function(){
    return this.pBase * pMultiplier * number;
};

您正在创建一个名为 calculateDps 的全局变量,因为您没有使用 var 关键字。为了将其附加到当前正在生成的对象,您需要执行以下操作

this.calculateDps = function(){
...

但理想的方法是将函数添加到原型(prototype)中,如下所示

function Item(pBase, price){
    this.pBase = pBase;
    this.price = price;
    this.pMultiplier = 1;
    this.number = 0;
};

Item.prototype.calculateDps = function() {
    return this.pBase * this.pMultiplier * this.number;
};

现在,calculateDps 将可用于所有使用 Item 构造函数创建的对象。

关于javascript - 未捕获的类型错误 : Object #<Item> has no method 'calculateDps' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21820580/

相关文章:

javascript - 如何在angularjs ajax调用中防止 "Provisional headers are shown"

javascript - 自定义 Javascript 在 Chrome 中不起作用

c - stdbool.h 和 float.h 库未链接到我的程序

javascript - typescript 循环结束时的回调

java - maven插件存储在哪里

java - Eclipse Java项目文件夹组织

javascript - 为相同的属性添加对象和数组

c++ - 如何检查 void* 是否指向对象类型的有效实例上的指针?

Angular2、Ionic2 :How to access an array of objects inside another array of objects in typescript?

javascript - 在 Javascript 中加入多个事件处理程序