我正在做一个需要使用名称空间来完成的项目。当我需要改变时,我有一些麻烦让它工作#34;这个"实际上 变量名。
因此
我创建了一个名称空间$ work。 然后是一个名为$ work.Guess的类(然后我将其重命名为" game") 然后一个名为point的方法。 (该方法通过点击按钮触发)
我试图改变"这个"别的东西..在我看来它应该是game.point,但那不起作用。所以我接着尝试了" var point"。他们都没有使用按钮上的onclick事件。然后我试图用我能想到的每个名字来实现这个方法而不是"这个"。失败。
以下是示例代码。
var $work = {};
$work.Guess = function() {
this.point = function() {
alert('found' + " " + 'point');
}
}
var game = new $work.Guess;

<form name="foo">
<h2>Check scores</h2>
<input type="button" value="Check points" onclick='game.point();' />
<br />
</form>
&#13;
答案 0 :(得分:2)
你想要摆脱这里的this
是对的。以这种方式向对象添加实例方法是浪费的,因为它为每个对象创建了一个新的函数副本。在Javascript中,“类方法继承”(因为它经典地称为)是通过原型完成的:
$work.Guess = function () { };
$work.Guess.prototype.point = function () {
alert('found point');
};
var game = new $work.Guess();
game.point();
我不应该在这里指出更好的ES6 class syntax。
答案 1 :(得分:-2)
试试这个
var $work = {};
$work.Guess = {
point: function() {
alert('found' + " " + 'point');
}
};
var game = $work.Guess;
<强>更新强>
不知道什么是downvotes。无论哪种方式,上述工作都很好。
<form name="foo">
<h2>Check scores</h2>
<input type="button" value="Check points" onclick='game.point();' />
<br />
</form>