gpt4 book ai didi

Javascript 原型(prototype)函数在 x 时重写

转载 作者:行者123 更新时间:2023-11-29 17:58:03 24 4
gpt4 key购买 nike

就我而言,我使用的是 Phaser 框架。

所以在这个例子中,我扩展了移相器的组类。每个“ Actor ”类(Sprite、Group...)每隔几毫秒调用一次 update() 原型(prototype)。

我的想法是仅当应用程序在桌面上运行时才扩展此功能(而不是在手机上)。

例如:

var MousePointer = function (game, parent, name) {
Phaser.Group.call(this, game, parent, name);
this.init();
};

MousePointer.prototype = Object.create(Phaser.Group.prototype);
MousePointer.prototype.constructor = MousePointer;

MousePointer.prototype.init = function () {
// ... init
};

MousePointer.prototype.update = function () {
// Do something when on desktop
};

我不可能在 update() 函数中使用 if 子句来检查播放器是否在桌面/平板电脑/手机上。那么有没有办法在初始化时实际覆盖原型(prototype)?

例如(伪代码):

if(onPhone)
MousePointer.prototype.update = parent.prototype.update;
else
MousePointer.prototype.update = this.update;

最佳答案

好吧,您已经为自己写下了答案,不是吗?此代码(不在 init 方法内)。

if(onPhone) {
MousePointer.prototype.update = function(){//Phone implementation};
} else {
MousePointer.prototype.update = function(){//Other implementation};
}

我建议不要从“常规”函数开始,然后可能会覆盖它,因为您只是在无意义地声明它。

关于Javascript 原型(prototype)函数在 x 时重写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37341494/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com