javascript中的this

this是Javascript语言的一个关键字。 它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用。 函数在不同的执行环境中this的值也跟着不同。 分一下四种

方法调用模式。

当函数作为对象的方法调用时,this指向该对象

    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。

    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的值,第二个是参数数组

    var num1=0;
    var func1=function(){
         alert(this.num1);
    }
    var obj={num1:1};
    func1();//0
    func1.apply(obj);//1

  

posted @ 2013-08-26 17:46  向晚  阅读(593)  评论(0编辑  收藏  举报