我正在编写一个小型JavaScript游戏框架并经常使用对象'属性,如
this.depth = this.y;
但是这些this
对@ @ @来说非常烦人。有没有办法只写...
depth = y;
......不影响全局对象?
我的实例是通过两个工厂函数创建的,它们创建了一个有限的预定义变量列表,所以它们都有depth
,y
等。函数通过{{1}应用于实例方法虽然可以改变所有方法。
我需要省略.apply()
关键字的原因是该框架不仅适用于我,也适用于其他人。我不需要在框架中删除this
,但this
关键字在编写基于此库的应用程序时会花费很多时间。到目前为止,我所知道的唯一解决方案是制作私人'变量,但它给那些以前没有使用JavaScript的人带来了一些不便,并且从obj2操纵obj1导致用this
制作大量匿名函数 - 甚至更多地狱。所以,正如我所看到的,JavaScript中没有灵丹妙药。
构造
.apply
答案 0 :(得分:12)
如果没有看到任何代码,你的问题很难回答,但总的来说,基于工厂和闭包的“现代”JavaScript OOP比旧的“崇拜Java”风格{{1}更简洁,更惯用}和new
'es。
旧式:
this
新风格:
function Something() {
this.depth = 0;
}
Something.prototype.incDepth = function() {
this.depth++;
}
foo = new Something()