【发布时间】:2014-01-16 11:47:51
【问题描述】:
我最近开始使用 JavaScript,但我在使用它使用的无类 OOP 样式时遇到了问题。这是我尝试使用的对象的示例:
function block(id, text, distance) {
this.id = id;
this.text = text;
this.distance = distance;
this.getId = function () { return this.id };
this.getText = function () { return this.text };
this.getDistance = function () { return this.distance };
this.addDistance = function (Distance) { this.distance = this.distance + Distance };
}
但是这似乎不起作用。然后我在这里做了一些阅读:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects,这似乎建议我从我的函数中删除方法并使用我的块的原型对象添加它们:
block.prototype.getDistance = function () {
return this.distance;
};
block.prototype.addDistance = function (Distance) {
this.distance = this.distance + Distance;
};
但这似乎仍然不起作用。例如,如果我试图遍历一个块数组并将距离相加:
var distTot = 10;
for (var i = 1; i < blocks.length; i++) {
var set = setLarge[i];
distTot = distTot + blocks[i - 1].getDistance;
};
我最终得到以下内容作为 distTot 变量的内容:“10function () {\r\n return this.distance;\r\n }function () {\r\n return this.distance;\ r\n }"
谁能向我解释我做错了什么?我已经检查过它们是否被正确实例化,并且那里的一切似乎都很好。我很确定这只是无法正常工作的方法。 提前致谢!
【问题讨论】:
-
原型和
this代码应该都可以工作。您能否向我们展示您是如何实例化您的block对象的,您是如何调用构造函数的?顺便说一句,你忘了调用getDistance方法。 -
@Bergi 似乎没有实例化 getDistance 方法是问题所在,谢谢!
标签: javascript function oop methods getter-setter