【发布时间】:2014-11-02 14:05:00
【问题描述】:
我听说 ES6 现在终于允许子类化 Array。这是一个由
给出的例子class Stack extends Array {
constructor() { super() }
top() { return this[this.length - 1]; }
}
var s = new Stack();
s.push("world");
s.push("hello");
console.log(s.top()); // "hello"
console.log(s.length); // 2
当然,这行得通。但至少在 Traceur 中,显式设置长度不会截断数组。而通过 console.log 打印时,输出是对象形式而不是数组形式,这表明有人没有将其视为“真实”数组。
这是 Traceur 如何实现子类化内置对象的问题,还是 ES6 的限制?
【问题讨论】:
-
我认为 Traceur 没有正确实现内置子类化(无论如何,如果没有内部组件,很难正确实现)。
-
我相信 Traceur 确实正确地实现了子类化。即使在 ES6 中,它也只是在 Typescript、Traceur 和其他转译器中使用的通用模式上加糖。
-
这对我不起作用
标签: ecmascript-6 traceur