我从 grunt npm 模块的源代码中看到以下代码行 -
String.prototype.__defineGetter__(method, function() { return this; });
只是试图预测上面匿名函数中“this”的值是什么——
- 它指向“方法”
- 全局“窗口”对象,如果在浏览器中运行或在 grunt 的角度类似的东西
- 如果在“defineGetter”定义中使用了调用或应用,则取决于defineGetter的定义。
谢谢您的帮助 !!
我从 grunt npm 模块的源代码中看到以下代码行 -
String.prototype.__defineGetter__(method, function() { return this; });
只是试图预测上面匿名函数中“this”的值是什么——
谢谢您的帮助 !!
this
将是发生 get 操作的对象,我认为它将始终是您调用的对象__defineGetter__
(因为我不能立即看到将函数转移到其他地方的方法,但我不保证你不能;不过,您必须故意这样做)。
值得注意的是,它__defineGetter__
是非标准且已过时的。当前定义 getter 的方法是使用Object.defineProperty
or Object.defineProperties
,如下所示:
Object.defineProperty(String.prototype, "foo", {
get: function() {
// Here, `this` is the string
return this.toUpperCase();
}
});
console.log("hi there".foo);
...记录"HI THERE"
。