你好,有人可以解释一下。
此代码没有问题,但如果您取消注释requestAnimationFrame,我会收到错误:无法设置属性' apple'未定义的
var food = function () {
this.makaroni = 5;
this.fruits = {
apple:1,
banana:3
};
}
food.prototype = {
change: function () {
this.makaroni = 10;
this.fruits.apple = 5;
//requestAnimationFrame(this.change);
}
}
var food1 = new food();
food1.change();
我不明白这里=)。 而问题只有苹果,makaroni没有问题。我真的不明白=)。
答案 0 :(得分:3)
requestAnimationFrame使用this.change
变为this
的新上下文调用window
。您需要将传递给requestAnimationFrame的函数绑定到当前上下文。
requestAnimationFrame(this.change.bind(this));
答案 1 :(得分:0)
你必须使用.prototype吗?
工作示例.... http://jsfiddle.net/ebkjvLe0/2/
var food = function () {
var _this = this; //SCOPE
this.makaroni = 5;
this.fruits = {apple:1, banana:3};
this.change = function () {
_this.makaroni = 10;
_this.fruits.apple = 5;
requestAnimationFrame(function(){
_this.change();
});
}
}
// Instantiate a new food, change, alert
var cat = new food();
cat.change();
alert(cat.makaroni);
alert(cat.apple);