javascript方法调用和apply关键字

首先定义一个对象,如下所示:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        var zhangsan = {
            name : "zhangsan",
            birth : 2020,
            age : function () {
                var now = new Date().getFullYear();
                return now - this.birth;
            }
        }
    </script>
</head>
<body>

</body>
</html>

浏览器console界面输入:zhangsan.age(),会返回2(当前是2022年),这里的this指的是当前对象zhangsan

上面的代码也可以换一种方式如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        function getAge(){
            var now = new Date().getFullYear();
            return now - this.birth;
        };

        var zhangsan = {
            name : "zhangsan",
            birth : 2020,
            age : getAge
        }
    </script>
</head>
<body>

</body>
</html>

同样在浏览器console界面输入:zhangsan.age(),会返回2(当前是2022年)

接下来我们直接调用getAge();

在浏览器console界面输入getAge();会返回NaN,这时候的this指的的windows,windows没有birth对象

但是javascript为我们提供了一个关键字apply, 通过这个关键字可以控制this指向的对象,我们在浏览器输入getAge.apply(zhangsan,[]),会发现也会返回2(当前是2022年),这个关键字的含义是,this指向zhangsan对象,参数为空!

posted @ 2022-01-10 17:28  Dawn_006  阅读(29)  评论(0)    收藏  举报