声明:
for( var item in this){
console.log( item );
}
在全局上下文中是一个 noop。然而在函数中
function foo(){
for( var item in this){
console.log( item );
}
}
foo();
这会产生全局环境对象。 这种行为的原因是什么?
与第一个示例一样,访问当前范围内对象的语法是什么?
最佳答案
在JavaScript中,“this”不是当前对象,而是当前方法的运行上下文。
例如:
function foo(){
console.log(this);
}
在全局范围内:
- 如果我调用foo(),控制台日志global
- 如果我调用 setTimeout(foo, 0),控制台会记录 Timer 对象,因为 foo 是由计时器调用的。
调用方法的最佳方式是在调用方法时使用 Function 对象的 call 方法为自己绑定(bind)运行上下文。
foo.call(this);
抱歉我的英语不好。 ^-^
关于javascript - 这在全局范围内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13370913/