有人知道吗?以前找不到这个问题,即使它看起来很基本。
答案 0 :(得分:3)
context
(this
关键字)并非完全隐式,可以明确设置和更改 。
例如:
function test () {
alert(this);
}
test.call("Hello world");
使用字符串作为上下文调用test
函数。
总而言之,除非您明确定义它,否则您无法知道this
是什么,或者您在函数内部。
答案 1 :(得分:2)
相同的函数会看到this
的不同值,具体取决于它的调用方式。有关详细信息,请参阅Crockford,但有四种情况:
new
关键字作为构造函数调用,它是新实例化的对象,它继承自存储在函数自己的prototype
属性中的对象。apply
或call
方法调用,它是第一个提供的参数。如果这些案例听起来复杂,繁琐且容易出错,那么就更有理由避免在方法之外依赖this
,无论如何它都是最有意义的。