关于this
严格模式中使用方法重构:
原因是'use strict'; var xiaoming = { name: '小明', birth: 1990, age: function () { function getAgeFromBirth() { var y = new Date().getFullYear(); return y - this.birth; } return getAgeFromBirth(); } }; xiaoming.age();// Uncaught TypeError: Cannot read property 'birth' of undefined
this指针只在
age方法的函数内指向
xiaoming,在函数内部定义的函数,
this又指向
undefined了!(在非strict模式下,它重新指向全局对象
window!
NaN)
'use strict';
var xiaoming = {
name: '小明',
birth: 1990,
age: function () {
var that = this; // 在方法内部一开始就捕获this
function getAgeFromBirth() {
var y = new Date().getFullYear();
return y - that.birth; // 用that而不是this
}
return getAgeFromBirth();
}
};
xiaoming.age(); 我们用一个
that变量首先捕获
this

浙公网安备 33010602011771号