JavaScript中的this对象

2018-03-25  本文已影响0人  o0ther

在JavaScript中,this对象是在运行时基于函数的执行环境决定的。this总是指的是调用函数的那个对象

1.一般的函数调用

下面这个例子在全局环境中调用函数,因此this指向全局对象Global。

function f1(){
    alert(this);
}
f1()//alert提示:[object Window]

2.在闭包中使用this

在闭包中使用this,此时this仍指的是全局对象,因此下面例子会输出1

let a = 1;
function f1() {
    let a = 0;
    return function () {
        return this.a;
    }
}
console.log(f1()());//1(非严格模式下输出1,否则会输出undefined);

每个函数在被调用时都会自动取得两个变量:this和arguments。内部函数在搜索这两个变量时,只会搜索到其活动变量为止。因此永远不可能反问到外部函数的变量。

3.使用call()和apply()函数改变this的指向

call和apply实际上是为了动态改变this而出现的,当一个对象中没有某个方法,而其他对象中有,我们就可以借助call和apply用其他对象的方法来操作。

var obj1 = {
            a : "knife",
            tools : function() {
                console.log("I use "+this.a);
            }
 };
 var obj2 = {
            a : "bow"
 };
 obj1.tools();//I use knife
 obj1.tools.call(obj2);//I use bow

emmmmm
暂时就这么多。

上一篇 下一篇

猜你喜欢

热点阅读