JavaScript——方法的定义和调用
方法的定义和调用
把函数放到对象里就变成了方法(一个对象里只有属性和方法)
var shenming={
//属性,用逗号隔开
name:'神明',
birth:2000,
//方法 把函数写在对象里面就是方法
age:function(){
//函数绑定在对象shenming上,可以做很多事情,比如得到对象的年龄
//返回当前的年份
var now= new Date().getFullYear();
return now-this.birth;
}
}
调用
//方法的调用
shenming.age()
//属性的调用
shenming.name
拓展:this指的是什么
把上面的代码拆开(函数写到对象外面)
function getAge(){
var now= new Date().getFullYear();
return now-this.birth;
}
var shenming={
name:'神明',
birth:2000,
age:getAge
}
结果:
- 如果调用shenming.age()可以得出年龄
- 如果直接调用getAge(),则结果为NaN
原因:因为this始终默认指向的是当前对象,当直接使用函数getAge()时,this指向的是全局对象window,而window没有birth这个属性,所以调用失败。
apply方法
apply可以指定this的指向
function getAge(){
var now= new Date().getFullYear();
return now-this.birth;
}
var shenming={
name:'神明',
birth:2000,
age:getAge
}
var taoxian={
name:'桃仙',
birth:1999,
age:getAge
}
var x=getAge.apply(shenming, []);//通过apply方法,将this指向shenming对象,参数赋值为空参
console.log(x)
//20