我已经了解到在函数调用中,this
将引用全局对象。在下面的函数中,哪个是全局对象?
是函数还是this
引用的单个默认全局对象?除此之外,这段代码实际上做了什么?我对method
占位符特别感到困惑。是否必须使用Function.prototype中预先存在的方法替换它?
在this.prototype[name] = func;
行中,它引用的是哪个属性,方法是?还是Function.prototype?
Function.prototype.method = function (name, func) {
this.prototype[name] = func;
return this;
};
答案 0 :(得分:2)
this
关键字引用当前对象,如果函数的范围是全局命名空间,则当前对象是全局对象,即环境是浏览器时的window
对象
当您向Function
类添加方法时,this
关键字将引用您调用method
方法的函数,因此它将返回函数本身这样就可以锁定电话。
这会将函数F
声明为构造函数,创建类型为F
的对象,将函数x
作为方法添加到F
并命名为{ {1}},然后使用对象xx
来调用真正为f
的{{1}}:
xx
所以,这个:
x
与:
相同function F() {}
function x() { alert(1); }
var f = new (F);
F.method('xx', x);
f.xx();