改变"这"到名称空间

时间:2016-01-04 15:23:03

标签: javascript class namespaces this

我正在做一个需要使用名称空间来完成的项目。当我需要改变时,我有一些麻烦让它工作#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;
&#13;
&#13;

2 个答案:

答案 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>