如何解决使用原型存储属性而不是JavScript类中的getter
因此,我要讲一遍口才很强的javascript platform game,在这个类中,为什么我们要在原型中存储size
属性?
说明说:
对于Player的所有实例,size属性都是相同的,因此我们将其存储在原型上,而不是存储在实例本身上。我们本可以使用类似getter的类型,但是每次读取属性时都会创建并返回一个新的Vec对象,这很浪费。 (字符串是不可变的,不必在每次评估时都重新创建。)
但是我听不懂。帮帮我!
class Player {
constructor(pos,speed) {
this.pos = pos;
this.speed = speed;
}
get type() { return "player"; }
static create(pos) {
return new Player(pos.plus(new Vec(0,-0.5)),new Vec(0,0));
}
}
Player.prototype.size = new Vec(0.8,1.5);
如果有人完成了游戏,谁能告诉我在new Vec(0.8,1.5)
,new Vec(0,-0.5)
和new Vec(0,0)
中如何获取x和y坐标。我很难理解它。谢谢!
解决方法
在原型上存储类似于其他语言(例如Java)中的静态属性 这意味着在所有Player实例之间只能共享一个Vec实例。
访问任何播放器的属性时,iJavaScript首先在播放器实例上查找常规属性,如果找不到,则在类原型上查找,然后在父类原型上查找,等等。
在这种情况下,它是最优化的。不是为每个播放器创建Vec实例,而是在内存中仅存在一个。换句话说,您可以将其视为常量。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。