由于js是真正灵活的语言,我总是想知道是否可以创建自定义数据类型。最后我决定尝试创建一个。我不是在谈论简单的课程,而是在谈论更像js本地人的东西。我将创建范围数据类型。数学范围例如(2.5; 9)或(-Infinity; 5)。还支持范围的总和(2; 7)u(9; 27)。它允许轻松地创建迭代器,例如2-8,步长为0.25。倒是喜欢它支持正常的js语法如,对于...在,或length属性calculeted基础上步财产。javascript - 自定义数据类型 - 我需要什么/我应该了解什么
可悲的是我已经注意到,_ 迭代 _仅支持在FF,但仍它应该有可能是因为其他的属性不可枚举准备迭代
我知道:
-Object.create /的DefineProperties
-getters/setter方法
次使用严格的(以最大限度地提高性能)
- _ 迭代 _(实际上不支持)
还有什么可能是有用的?
Atm。我会这样做:
我会在本地范围内创建一些隐藏的变量,以便在每次更改步骤和存储范围后预先计算迭代器。使用户完全看不见。除了步骤之外,所有属性都不可枚举 - 这些属性将添加迭代器重新计算。就这么简单的范围[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
这是好主意,或者有其他更合适的方式来做到这一点?是否有可能让这个班级使用+ - 等运算符?