javascript - 自定义数据类型 - 我需要什么/我应该了解什么

时间:2013-12-19 01:55:43

标签: javascript html5 class ecmascript-5 custom-data-type

由于js是非常灵活的语言,我总是想知道是否可以创建自定义数据类型。最后我决定尝试创建一个。我不是在谈论简单的课程,而是谈论更像js natives的事情。我要创建范围数据类型。数学范围如(2.5; 9)或(-Infinity; 5)。也支持范围之和(2; 7] u(9; 27)。它允许轻松创建迭代器,例如2-8,步长为0.25。我喜欢它支持常规的js语法,例如for ... in,或者基于step属性计算的length属性。

遗憾的是我注意到 _ iterator _ 仅在ff中受支持,但仍然可以通过使其他属性不可枚举来准备迭代器。

我知道:

-Object.create /
的DefineProperties -getters / setter方法
- 使用严格(以最大限度地提高性能)
- _ 迭代器 _ (实际上不受支持)

还有什么可以用的吗?

大气压。我这样做:

我会在本地范围内创建一些隐藏的变量,以便在每次更改步和存储范围后预先计算迭代器。使两者对用户完全不可见。除步骤外,所有属性都不可枚举 - 将使用迭代器重新计算添加theese。如此简单的范围[2; 7]与步骤2看起来像:

local scope:
ranges:[[2;7]] // more arrays if it'd be sum
iterator:[2,4,6]
//other internal variables

not enumerable:
array: // returns copy of iterator using getter
//some other useful properties

enumerable:
0:2
1:4
2:6

这是好主意,还是有其他更合适的方法呢?是否可以允许此类使用+ - ?

之类的运算符

1 个答案:

答案 0 :(得分:1)

在JavaScript(第5版)中,一个

  • 无法创建自定义语法语法或文字形式;
  • 无法重载运算符

但是,已经创建了许多“自定义数据类型”;随意创造另一个。例如,jQuery(操纵DOM元素的序列),moment.js(日期替换)和big.js(带操作的“大数字”类型)都是“自定义数据类型” - 尽管方法替换为运算符

否则,不确定问题的其余部分在哪里......除了关闭。