js中的this

his是Javascript语言的一个关键字。

它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用。

随着函数使用场合的不同,this的值会发生变化。但是有一个总的原则,那就是this指的是,调用函数的那个对象。

1、普通函数

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
    <script>
        var x = 1;
        function test() {
            this.x = 2;
            alert(this.x);
        }
        test();//2,test()函数的this就是window,this===window返回true
        alert(x);//2
    </script>
</head>
<body>

</body>
</html>

2、函数作为对象的方法调用,this就指向上级对象

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
    <script>
        function test() {
            alert(this.x);
        }
        var o = {};
        o.x = 1;
        o.m = test;
        o.m();//test方法中的this===o等于true,this指向调用test的上级对象o
    </script>
</head>
<body>

</body>
</html>

 3、作为构造函数调用,所谓构造函数,就是通过函数new一个新对象,这是this就指向新对象。

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
    <script>
        function test() {
            this.x=1;
        }
        var o = new test();//new一个对象(C#中new一个实例对象),调用无参构造函数,test中this指向新对象o
        alert(o.x);
    </script>
</head>
<body>

</body>
</html>

 4、apply调用,apply()是函数对象的一个方法,apply的作用就是改变函数的调用对象,apply第一个参数就是表示改变后的调用这个函数的对象。所以this就是指的第一个参数

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
    <script>
        var x = 0;
        function test() {
            alert(this.x);
        }
        var o = {};
        o.x = 1;
        o.m = test;
        o.m.apply();//apply后test中this变成全局对象了,x结果为0
    </script>
</head>
<body>

</body>
</html>

 

posted @ 2016-07-05 14:12  wjl910  阅读(114)  评论(0)    收藏  举报