美文网首页
JavaScript中的this对象

JavaScript中的this对象

作者: o0ther | 来源:发表于2018-03-25 16:54 被阅读0次

    在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
    暂时就这么多。

    相关文章

      网友评论

          本文标题:JavaScript中的this对象

          本文链接:https://www.haomeiwen.com/subject/lyghcftx.html