由于js是一种非常灵活的语言,我一直想知道是否可以创建自定义数据类型。最后,我决定尝试创建一个。我说的不是简单的类,而是会表现得更像js本地人的东西。我要创建范围数据类型。数学范围为(2.5;9)或(-Infinity;5)。也支持幅度(2;7)u (9;27)。它允许轻松创建迭代器(如2-8 ),只需0.25步。我希望它能支持常规的js语法。为了..。基于step属性调用的in或length属性。
遗憾的是,我注意到_iterator_只支持ff,但仍然可以通过使其他属性不可枚举来准备迭代器。
我知道:
-Object.create/defineProperties
-getter/setters
-use严格(最大限度地提高性能)
-_iterator_ (实际上不支持)
还有其他有用的东西吗?
自动取款机。我会这样做的:
我会在本地范围内创建一些隐藏的vars,以便在步骤和存储范围每次更改后预先计算迭代器。使用户完全看不见两者。除了步骤之外,所有属性都不是可枚举的--这些属性将与迭代器重新计算一起添加。因此,步骤2的简单范围2;7如下所示:
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这是个好主意,还是有其他更合适的方法?是否可以允许该类使用像+-这样的运算符?
发布于 2013-12-19 02:16:27
JavaScript (编辑)5),一
但是,已经创建了许多“自定义数据类型”;可以随意创建另一个类型。例如,jQuery (操纵DOM元素的序列)、moment.js (日期替换)和big.js (带有操作的“大数字”类型)都是“自定义数据类型”--尽管方法替代了操作符。
否则,不太确定问题的其余部分将走向何方。除了关闭。
https://stackoverflow.com/questions/20672093
复制相似问题