如何摆脱本地函数中的`this`关键字?

时间:2015-02-15 11:02:45

标签: javascript this

我正在编写一个小型JavaScript游戏框架并经常使用对象'属性,如

this.depth = this.y;

但是这些this对@ @ @来说非常烦人。有没有办法只写...

depth = y;

......不影响全局对象?

我的实例是通过两个工厂函数创建的,它们创建了一个有限的预定义变量列表,所以它们都有depthy等。函数通过{{1}应用于实例方法虽然可以改变所有方法。

我需要省略.apply()关键字的原因是该框架不仅适用于我,也适用于其他人。我不需要在框架中删除this,但this关键字在编写基于此库的应用程序时会花费很多时间。到目前为止,我所知道的唯一解决方案是制作私人'变量,但它给那些以前没有使用JavaScript的人带来了一些不便,并且从obj2操纵obj1导致用this制作大量匿名函数 - 甚至更多地狱。所以,正如我所看到的,JavaScript中没有灵丹妙药。

构造

.apply

1 个答案:

答案 0 :(得分:12)

如果没有看到任何代码,你的问题很难回答,但总的来说,基于工厂和闭包的“现代”JavaScript OOP比旧的“崇拜Java”风格{{1}更简洁,更惯用}和new'es。

旧式:

this

新风格:

function Something() {
   this.depth = 0;
}
Something.prototype.incDepth = function() {
   this.depth++;
}
foo = new Something()