Javascript:将上下文属性传递到函数范围

时间:2013-04-23 12:03:22

标签: javascript scope

我正在寻找一种方法将属性从“this”注入到本地函数范围,所以我不需要写'this'。在引用此属性时。

详细信息显示在此代码http://jsfiddle.net/wwVhu/3/中,请查看此部分

    ...
    //it's how it works
    doStuff: function(param) { $('#output').html(this.value + param) }

    //it's how i want it work - without referencing to this
    //doStuff: function(param) { $('#output').html(value + param) }

我知道可以通过将函数代码包装在“with(this){...}”中来实现,但还有什么其他选项?

在每个方法的开头写一个“with(this)”或者使用js aop是我想要避免的。

2 个答案:

答案 0 :(得分:0)

你为什么要这样做?它是命名空间,因为它很有意义。 this引用侦听器正在侦听的元素。它包含的信息远不仅仅是价值。

如果你想要另一个变量中的值,你可以这样做:

var value = this.value

答案 1 :(得分:0)

基本上有四种选择:

  1. 你保持原样。上下文和局部范围是不同的对象,将它们组合起来是不好的做法并导致冲突。
  2. 您将value属性作为第二个参数添加到doStuff函数。
  3. 您的昵称this标识符较短。我经常发现自己使用$t
  4. 您使用with(this) $('#output').html(value + param);。如1)中所述,这是一种糟糕的编码习惯。您的代码在param
  5. 中存在this属性时会被破坏