javascript中的this

this是Javascript語言的一個關鍵字。 它表明函數運行時,自動生成的一個內部對象,只能在函數內部使用。 函數在不一樣的執行環境中this的值也跟着不一樣。 分一下四種javascript

方法調用模式。

當函數做爲對象的方法調用時,this指向該對象java

    var num1=0;
    var obj={};
    obj.num1=1;
    obj.func=function(){
        return this.num1;
    }   
    alert(obj.func());//1

  

普通的函數調用模式

當函數直接調用時,this指向全局對象window。數組

    var num1=0;
    var func=function(){
        return this.num1;
    }
    alert(func())//0

  

當函數內部的函數用普通調用方式調用時,this仍指向全局對象window。app

    var num1=0
    var obj={};
    obj.num1=1;
    obj.func1=function(){
        var  num1=2;
        var that=this;
        var func2=function(){
            alert(this.num1);//0
            alert(that.num1);//1
            alert(num1);//2
        }
        func2();
    }
    obj.func1();

  

構造器調用模式,即便用new關鍵詞

當使用new方式調用函數時,this指向新建立的對象。函數

    function Person(name){
        this.name=name;
    }
    var person=new Person("向晚");
    alert(person.name)//向晚

  

apply(),call()調用模式

apply()接收兩個參數,第一個是將被綁定到this的值,第二個是參數數組this

    var num1=0;
    var func1=function(){
         alert(this.num1);
    }
    var obj={num1:1};
    func1();//0
    func1.apply(obj);//1
相關文章
相關標籤/搜索