从另一个(包括其自身)触发一个原型函数
Trigger one prototype function from another (including itself)
问题
我创建了一个名为Game
的构造函数。然后,我尝试通过使用原型添加两个新功能(update
和render
)来扩展它的功能。
但是,我希望我的update
函数能够同时调用本身,然后调用render
。
我的代码
var Game = function(){
};
Game.prototype.update = function(){
requestAnimationFrame(this.render);
requestAnimationFrame(this.update);
};
Game.prototype.render = function(){
console.log('Rendering');
};
var game = new Game();
game.update();
我也尝试过
requestAnimationFrame(render);
requestAnimationFrame(update);
而且。。
requestAnimationFrame(Game.render);
requestAnimationFrame(Game.update);
而且。。。
requestAnimationFrame(Parent.render);
requestAnimationFrame(Parent.update);
但由于我的javascript知识存在一些差距(非常明显),我无法做到这一点。看起来this
和parent
都指的是window
——我猜这是因为函数是如何创建的。
这是我收到的错误;
Game.js:6未捕获类型错误:执行失败"Window"上的"requestAnimationFrame":回调提供为参数1不是函数。
我已经找到的问题
我已经在SO上发现了以下问题,但它们似乎对这个特定的问题没有那么大帮助。
Javascript多个原型函数-如何从另一个调用一个
从原型函数调用函数
那些线
requestAnimationFrame(this.render);
requestAnimationFrame(this.update);
应该是
requestAnimationFrame(this.render.bind(this));
requestAnimationFrame(this.update.bind(this));
否则,在递归的第二次执行中,关键字this
将引用window
对象,而不是Game
。window.update
显然不是一个函数,正如错误所指出的那样。
您丢失了对Game对象的引用,请尝试像这样绑定"this":
var Game = function(){
};
Game.prototype.update = function(){
requestAnimationFrame(this.render.bind(this));
requestAnimationFrame(this.update.bind(this));
};
Game.prototype.render = function(){
console.log('Rendering');
};
var game = new Game();
game.update();
相关文章:
- 为什么要包装每一个原型“;类“;JS中具有匿名函数的对象
- 将原型调用为新对象中的另一个原型
- 从另一个(包括其自身)触发一个原型函数
- 如何在另一个原型事件完成后启动该原型事件
- JavaScript–从另一个原型函数调用原型的一个函数
- 如何在另一个原型中创建可调用的原型方法
- 如何创建一个原型函数,将另一个原型函数绑定为语法糖(并保持实例的上下文)
- 访问另一个原型函数的 Javascript 原型
- 调用原型的重写方法,然后调用下一个原型的重写方法错误
- 如何在数据绑定后在 KNOCKOUT js 中使用“with”访问另一个原型对象
- 如何将原型函数名称传递给另一个原型函数
- 承诺完成后调用另一个原型方法
- 如何在多个HTML页面中使用一个原型实例
- 将值传递给另一个原型函数
- 复杂的循环节点模块依赖抛出“类型错误:'继承'的超级构造函数必须有一个原型”
- 在javascript中,我如何在另一个原型方法中调用一个原型
- 如何在另一个原型中使用原型函数
- Javascript.我如何调用一个原型方法,给定该方法的名称为字符串加args
- 如何拥有一个原型的一堆实例
- 添加到另一个原型实例的原型:JavaScript