1

我正在寻找一种将“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 是我试图避免的。

4

2 回答 2

0

基本上有四种选择:

  1. 你保持原样。上下文和局部范围是不同的对象,将它们结合起来是不好的做法并会导致冲突。
  2. 您将 value 属性作为第二个参数添加到doStuff函数中。
  3. this您使用较短的标识符昵称。我经常发现自己使用$t.
  4. 你用with(this) $('#output').html(value + param);. 这是一种不好的编码习惯,如1). 您的代码paramthis.
于 2013-04-23T20:01:56.123 回答
0

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

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

var value = this.value
于 2013-04-23T12:11:20.953 回答