为什么这个JavaScript示例指向全局对象(窗口)?
分解组件元素 假设你要这样做:为什么这个JavaScript示例指向全局对象(窗口)?,javascript,Javascript,分解组件元素 假设你要这样做: function F() { function C() { return this; } return C(); } var o = new F(); 这里显然没有对象上下文,因此这个是窗口 将该设置包装到构造函数中不会改变这样一个事实,即直接调用C()C()的上下文中不涉及任何对象不是f对象的方法。与中一样,您不能调用o.C()。如果这有道理的话。因为您返回的是C()的返回值,而不是新的C实例,所以它返回窗口对象。
function F() {
function C() {
return this;
}
return C();
}
var o = new F();
这里显然没有对象上下文,因此这个
是窗口
将该设置包装到构造函数中不会改变这样一个事实,即直接调用C()
C()
的上下文中不涉及任何对象不是f
对象的方法。与中一样,您不能调用o.C()代码>。如果这有道理的话。因为您返回的是C()
的返回值,而不是新的C实例,所以它返回窗口对象。函数F(){return this;}也将返回窗口。那么var obj=这个。只要“this”没有其他值,它就不是“this”的值。函数C()不是F的方法,您需要做的事情如下:
function C() {
return this;
}
var o = C();
虽然这有点复杂,但当你可以这样做来实现同样的目标时:
function F() {
this.C = function() {
return this;
}
return this.C();
}
var o = new F();
function F() {}
var o = new F();