【发布时间】:2012-06-15 21:35:23
【问题描述】:
我正在用 CoffeScript(所以 JS)编写一个库,而且数学很繁重。我真的需要使用类型化数组 (Float64Array) 以及它们提供的所有性能。
那么扩展类型化数组功能的最佳方式是什么?
目前我正在做类似函数:
Vector =
create: (ag...) ->
CGE2Point.create ag...
dot: (i,j) ->
i[0]*j[0] + i[1]*j[1]
add: (i,j) ->
@.create i[0]+j[0], i[1]+j[1]
sub: (i,j) ->
@.create i[0]-j[0], i[1]-j[1]
mul: (s,v) ->
@.create s * v[0], s * v[1]
div: (s,v) ->
@.create v[0] / s, v[1] / s
但是如果有一个继承自类型化数组的 Vector 对象,那就太好了。我知道这种方法:
class Vector extends Float64Array
创建一个不具备类型数组Question about subclassing array 的全部好处的类,阅读以下文章Dean Edwards 建议从iframe 获取对象副本,此其他参考以其他方式执行Sorry Dean。但是类型化数组没有所有这些方法。
那么,对类型化数组进行子类化的正确(或至少是最优雅和最高效)的方法是什么?还是我应该写所有类似的函数?
【问题讨论】:
-
JavaScript 是基于原型的对象模型,而不是基于类的。
-
@Canesin the answers in this question 可以非常明确。
标签: javascript arrays floating-point coffeescript subclass