Babel 编译 ES6 的 class extends Array 时,无法获取方法,求助

2016-11-20 16:57:42 +08:00
 dxcqcv

代码如下

   class MyCoolArray extends Array {
          first() { return this[0];}
       }
     var a = new MyCoolArray(1,2,3);
     console.log(a.first());// get error 'a.first is not a function'

谁知道为什么 first 无法执行?谢谢

babel 在线 https://babeljs.io/repl/#?babili=false&evaluate=true&lineWrap=false&presets=es2015%2Ces2015-loose%2Ces2016%2Ces2017%2Clatest%2Creact%2Cstage-0%2Cstage-1%2Cstage-2%2Cstage-3&code=class%20MyCoolArray%20extends%20Array%20%7B%0A%20%20first()%20%7B%20return%20this%5B0%5D%3B%7D%0A%20%7D%0A%0Avar%20a%20%3D%20new%20MyCoolArray(1%2C2%2C3)%3B%0A%0A%0Aconsole.log(a.first())%3B

2466 次点击
所在节点    JavaScript
3 条回复
pentium100
2016-11-20 18:08:33 +08:00
Array 是不能直接继承的。 这是个特例 。
http://www.2ality.com/2013/03/subclassing-builtins-es6.html
MinonHeart
2016-11-20 18:40:09 +08:00
super 呢
dxcqcv
2016-11-20 19:41:16 +08:00
@pentium100 先谢谢,还没细看,奇怪的是我可以打印 a 和 a.length ,只是不能使用里面的方法

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/321886

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX