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对象,参数为空!