var xiaoming ={
name:'小明',
birth:1990,
age:function(){var y =newDate().getFullYear();return y -this.birth;}};
xiaoming.age;// function xiaoming.age
xiaoming.age();// 调用age方法 28
绑定到对象的函数统称为方法,和普通函数一样
方法内部this是一个特殊变量,它是指向当前对象的指针
// 拆开写functiongetAge(){var y =newDate().getFullYear();return y -this.birth;}var xiaoming ={
name:"小明",
birth:1990,
age: getAge
};
xiaoming.age();// 25 right resultgetAge();// NaN
// 重构一下var xiaoming ={
name:"小明",
birth:1990,
age:function(){functiongetAgeFromBirth(){var y =newDate().getFullYear();return y -this.birth;}returngetAgeFromBirth();}};
xiaoming.age();// Uncaught TypeError: Can not read property 'birth' of undefined
var xiaoming ={
name:"小明",
birth:1990,
age:function(){var that =this;functiongetAgeFromBirth(){var y =newDate().getFullYear();return y - that.birth;}returngetAgeFromBirth();}};
xiaoming.age();// 28
apply and call
可以用来改变this的指向
接收两个参数,第一个参数就是需要绑定的this变量对象,第二个表示函数本身的参数
functiongetAge(){var y =newDate().getFullYear();return y -this.birth;}var xiaoming ={
name:"小明",
birth:1990,
age: getAge
};
xiaoming.age();// 28
getAge.apply(xiaoming,[]);// 28
JS方法JS方法apply and callJS方法一个对象中绑定函数,就称为该对象的方法var xiaoming = { name: '小明', birth: 1990, age: function() { var y = new Date().getFullYear(); return y - this.birth; }...