来自Javascript-Garden:
Foo.method = function() {
function test() {
//this is set to the global object
}
test();
}
Run Code Online (Sandbox Code Playgroud)
为了从测试中获得对Foo的访问,有必要在引用Foo的方法内部创建一个局部变量:
Foo.method = function() {
var that = this;
function test(){
//Use that instead of this here
}
test();
}
Run Code Online (Sandbox Code Playgroud)
有人能解释一下吗?据我所知,this如果在全局范围内调用它,则引用全局对象.但是这里它被称为函数内部,它位于一个方法(第一个例子)中.为什么它确实引用了全局对象,而第二个例子却没有?
据我所知,如果在全局范围内调用它,则指的是全局对象.
号this将引用默认的对象,如果调用函数时不明确的情况下.范围无关紧要.(在严格模式中,它将undefined改为引用).
它究竟是为什么指的是全局对象
我们无法分辨它的含义.值this取决于函数的调用方式,而不是函数的定义方式.
现在您已经更新了示例,我们可以看到它是在没有上下文的情况下调用的,因此this(在内部函数中)将是默认对象,它在Web浏览器中window(它将undefined处于严格模式).
而第二个例子没有?
在第二个示例中,内部函数不使用this(其值与前一个示例相同).
第二个例子使用了that.that在外部函数的范围内定义,并设置this为调用该函数时的值.
假设函数被调用为Foo.method()then(外部)this(因此that)将是Foo因为这是method被调用的上下文.
| 归档时间: |
|
| 查看次数: |
91 次 |
| 最近记录: |