3

我从 grunt npm 模块的源代码中看到以下代码行 -

String.prototype.__defineGetter__(method, function() { return this; });

只是试图预测上面匿名函数中“this”的值是什么——

  • 它指向“方法”
  • 全局“窗口”对象,如果在浏览器中运行或在 grunt 的角度类似的东西
  • 如果在“defineGetter”定义中使用了调用或应用,则取决于defineGetter的定义。

谢谢您的帮助 !!

4

1 回答 1

7

this将是发生 get 操作的对象,我认为它将始终是您调用的对象__defineGetter__(因为我不能立即看到将函数转移到其他地方的方法,但我不保证你不能;不过,您必须故意这样做)。

值得注意的是,它__defineGetter__是非标准且已过时的。当前定义 getter 的方法是使用Object.definePropertyor Object.defineProperties,如下所示:

Object.defineProperty(String.prototype, "foo", {
  get: function() {
    // Here, `this` is the string
    return this.toUpperCase();
  }
});

console.log("hi there".foo);

...记录"HI THERE"

实例| 资源

于 2012-12-19T21:58:17.527 回答