我了解到在函数调用中,this
将引用全局对象。在下面的函数中,哪个是全局对象?
是函数还是 this
将引用的单个默认全局对象?除此之外,这段代码实际上做了什么?我对 method
占位符特别困惑。是否必须用 Function.prototype 中预先存在的方法替换它?
在 this.prototype[name] = func;
行中,它指的是哪个属性,是方法的还是 Function.prototype 的?
Function.prototype.method = function (name, func) {
this.prototype[name] = func;
return this;
};
最佳答案
this
关键字引用当前对象,如果函数作用域是全局命名空间,则当前对象是全局对象,即window
对象如果环境是浏览器。
当您向Function
类添加方法时,this
关键字将引用您调用method
方法的函数on,因此它将返回函数本身,以便可以链接调用。
这会将函数 F
声明为构造函数,创建类型为 F
的对象,将函数 x
添加为方法F
并将其命名为xx
,然后使用对象f
调用xx
,这实际上是x
:
function F() {}
function x() { alert(1); }
var f = new (F);
F.method('xx', x);
f.xx();
所以,这个:
F.method('xx', x).method('yy', y);
等同于:
F.prototype.xx = x;
F.prototype.yy = y;
关于JavaScript:什么是全局对象, "this"指的是哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3758452/