javascript中this的用法

在javascript中,this对象是在运行时基于函数的执行环境绑定的:在全局函数中,this等于window,而当函数被作为某个对象的方法调用时,this等于那个对象。不过,匿名函数的执行环境具有全局性,因此其this对象通常指向window。

下面来解释一下this绑定的四种情况:

1、默认绑定

默认绑定全局变量

function fn() {
    console.log( this.a );
}
var a = 2;
fn(); 
// 2 -- fn单独调用,this引用window

2、隐式绑定

this引用的是函数据以执行的环境对象

function fn() {
    console.log( this.a );
}
var obj = {
    a: 2,
    fn: fn
};
obj.fn(); 
// 2 -- this引用obj。

3、显式绑定

apply()、call()和bind()在特定的作用域中调用函数,实际上等于设置函数体内this对象的值

 function fn() {
     console.log( this.a );
 }
 var obj = {
     a: 2
 };
 fn.call( obj );
 // 2

4、new绑定

如果是一个构造函数,那么用new来调用,那么绑定的将是新创建的对象

function fn(a) {
    this.a = a;
}
var bar = new fn( 2 );
console.log( bar.a );
// 2

猜你喜欢

转载自blog.csdn.net/w3624270/article/details/81251914
今日推荐