小编Cos*_*ych的帖子

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

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

this.depth = this.y;
Run Code Online (Sandbox Code Playgroud)

但这些this'非常令人讨厌@ _ @.有没有办法写...

depth = y;
Run Code Online (Sandbox Code Playgroud)

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

我的情况下,通过两个工厂函数创建的,并且他们做预定义变量的一个有限列表,所以个个都depth,y等等的功能被应用于实例.apply()方法,尽管这一切可能会发生变化.

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

构造函数:

/*...*/
'Copy' : function (type) {
  var obj = {
    'x':0,
    'y':0,
    'xprev':0,
    'yprev':0,
    /*...*/
  };
  return obj;
},
'make' : function (type,x,y) {
  obj = ct.types.Copy(type);
  obj.x = obj.xprev = obj.xstart = x;
  obj.y = obj.yprev = obj.ystart = y;

  /*...*/

  ct.stack.push(obj);
}
/*...*/
Run Code Online (Sandbox Code Playgroud)

javascript this

22
推荐指数
1
解决办法
2636
查看次数

`if(0 in array)` - 这是否合法?

现在我正在编写一个关于JavaScript编码的实验室作品.我知道有一种类似的结构

if ('field' in object) {
    /* Do something with object.field */
}
Run Code Online (Sandbox Code Playgroud)

用于确定一个名为fieldtrue 的变量,object即使它等于undefined也是如此.

我的Firefox Developer Edition 44能够确定数组中是否有这样的字段:

if (0 in array) {
    /* Do something with first element */
}
Run Code Online (Sandbox Code Playgroud)

问题是:这种方法合法吗?它是生活标准的一部分吗?


该做什么:
让q成为具有这些元素的数组:

[ 5, <1 empty slot>, undefined, 5 ]
Run Code Online (Sandbox Code Playgroud)

然后:

  • 0 in q,2 in q,3 in q等于true;
  • 1 in q等于false.

javascript syntax cross-browser

0
推荐指数
1
解决办法
243
查看次数

标签 统计

javascript ×2

cross-browser ×1

syntax ×1

this ×1