方法
一个对象中绑定一个函数:称为这个对象的方法,来一个:
写一个age()方法,返回xiaoming年龄:
var xiaoming = {
name: '小明',
birth: 1990,
age: function () {
var y = new Date().getFullYear();//调用当前年时间
return y - this.birth;
}
};
xiaoming.age; // function xiaoming.age()
xiaoming.age(); // 今年调用是25,明年调用就变成26了
在方法内部,this是一个特殊变量,始终指向当前对象,也就是xiaoming这个变量。所以,this.birth 可以拿到xiaoming的birth属性。
另外写一个看看:
function getAge() {
var y = new Date().getFullYear();
return y - this.birth;
}
var xiaoming = {
name: '小明',
birth: 1990,
age: getAge
};
xiaoming.age(); // 25, 正常结果
getAge(); // NaN
什么结果?
单独调用getAge() 返回了NaN,所以…这个this到底指向了谁?????答案是视情况而定!
(1)如果以对象的方法形式调用,比如xiaoming.age(),该函数的this指向被调用的对象,也就是xiaoming,这是符合我们预期的。
(2) 如果单独调用函数,比如getAge(),此时,该函数的this指向全局对象,也就是window。
现在this还有点迷糊,先沉淀沉淀,明天再看一遍。