JS 中 this 的用法

this是JavaScript语言中的一个关键字

他是函数运行时,在函数体内部自动生成的一个对象, 只能在函数体内部使用.

在不同function中, this有不同的值. 

 

1. 纯粹的函数调用.

function的最终通用用法, 属于全局性调用, 此时this 指向的是全局对象(window).

<script>
        var x = 1;
        function test() {
            console.log(this.x);
        }
        test(); // 1
    </script>

 

2. 作为对象方法的调用

function还可以最谋改革对象的方法调用. 这时 this就只这个上级对象.

    <script>
        function test() {
            console.log(this.x);
        }

        var obj = {};
        obj.x = 1;
        obj.m = test;
        obj.m(); // 1
    </script>

 

3. constructor 构造函数调用

所谓构造函数, 就是通过这个函数, 可以生成一个新对象. 这时, this 就只这个新对象.

<script>
        function Test() {
            this.x = 1;
        }

        var obj = new Test();
        obj.x // 1;
    </script>

 

 4. object中function的this

这里this 指向john object. this keyword refers to the object that called the method. object in this cases is john object.

<script>
        var john = {
            name: 'John',
            yearOfBirth: 1990,
            calculateAge: function() {
                console.log(this);
            }
        }

        john.calculateAge();
    </script>

 

 

 

5. 在function中的innerFunction

在innerFunction中的this 指向window 因为 innerFunction是普通的function. default object 是window object. 

    <script>
        var john = {
            name: 'John',
            yearOfBirth: 1990,
            calculateAge: function () {
                console.log(this);

                function innerFunction() {
                    console.log(this);
                }
                innerFunction();
            }
        }
        john.calculateAge();
    </script>

 

 

 

 

http://www.ruanyifeng.com/blog/2010/04/using_this_keyword_in_javascript.html

posted @ 2018-10-09 17:45  TheMiao  阅读(128)  评论(0编辑  收藏  举报