【发布时间】:2015-03-20 00:45:52
【问题描述】:
我现在正在使用 Traceur 来编写一些未来的 javascript,这是我在某个类中拥有的一个函数
create() {
this.game.physics.startSystem(Phaser.Physics.ARCADE);
this.segmentcache = new SegmentCache(this.game);
this.segments = new Segments(this.game);
this.segments.cache = this.segmentcache;
this.segments.seek(3);
this.guy = new Guy(this.game, 140 + 8, 80);
this.guy.anchor.set(0.5, 1.0);
this.game.add.existing(this.guy);
this.game.camera.x = 100;
this.ticks = 0;
this.cross = 0;
}
当然,与任何传统的 javascript 代码一样,它到处都被 this 关键字覆盖。来自 Java 之类的,当我不需要时,在引用类中的字段时必须指定它是非常不自然的。
有什么方法可以让 Traceur 像 Java 一样解释类? (即在未指定时自动插入等)
【问题讨论】:
-
那将不再是有效的 JavaScript。 Traceur 没有定义新的语言,它坚持 ES6 规范。我认为您的处理方式不正确。如果您想编写 JavaScript 而不是这样做,并且不要试图将其视为 Java(因为无论如何它都非常不同)。对我来说,恰恰相反:我觉得你不必在 Java 中指定
this非常令人困惑。我发现这种“隐含性”使遵循代码变得更加困难。 -
function() { with(this) { ... } };) -
@JeremyBanks - 最后我差点错过了。不过会为他服务。
-
更严重的是:这可能无法在像 JavaScript 这样动态的语言中有效地实现。有可能在提议的“SoundScript”子集中实现,但这是 ES6 之外的几个步骤。也许有一天。
-
我认为这不是一个好主意。如果你想写Java,就写Java。也许将其编译为 Javascript。但不要强迫语言成为它不是的东西。
标签: javascript ecmascript-6 traceur