Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript-自定义数据类型-我需要/应该了解什么_Javascript_Html_Class_Ecmascript 5_Custom Data Type - Fatal编程技术网

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

javascript-自定义数据类型-我需要/应该了解什么,javascript,html,class,ecmascript-5,custom-data-type,Javascript,Html,Class,Ecmascript 5,Custom Data Type,由于js是一种非常灵活的语言,我一直想知道是否有可能创建自定义数据类型。最后,我决定尝试创建一个。我说的不是简单的类,而是一些行为更像js本地人的东西。我将创建范围数据类型。数学范围,如(2.5;9]或(-Infinity;5)。还支持范围总和(2;7]u(9;27)。它允许轻松创建0.25步的迭代器,如2-8。我希望它支持常规js语法,如for…in,或基于步骤属性计算的长度属性 遗憾的是,我注意到,\u迭代器仅在ff中受支持,但仍然可以通过使其他属性不可枚举来准备迭代器 我知道: -对象。创

由于js是一种非常灵活的语言,我一直想知道是否有可能创建自定义数据类型。最后,我决定尝试创建一个。我说的不是简单的类,而是一些行为更像js本地人的东西。我将创建范围数据类型。数学范围,如(2.5;9]或(-Infinity;5)。还支持范围总和(2;7]u(9;27)。它允许轻松创建0.25步的迭代器,如2-8。我希望它支持常规js语法,如for…in,或基于步骤属性计算的长度属性

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

我知道:

-对象。创建/定义属性
-获取者/设置者
-使用严格的(以最大限度地提高性能)
-\u迭代器(实际上不受支持)

还有什么有用的吗

自动取款机。我会这样做:

我会在本地范围内创建一些隐藏变量,以便在每次更改步骤和存储范围后预计算迭代器。以使这两个变量对用户完全不可见。除步骤外,所有属性都不可枚举-这些属性将通过迭代器重新计算添加。因此,步骤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
这是一个好主意,还是有其他更合适的方法呢?是否可以允许这个类在JavaScript(第5版)中使用像+-?

这样的操作符

  • 无法创建自定义语法或文字形式
  • 无法重载运算符
然而,已经创建了许多“自定义数据类型”,可以随意创建另一种。例如,jQuery(操作DOM元素序列)、矩.js(日期替换)和big.js(带有操作的“大数字”类型)都是“自定义数据类型”——尽管方法可以替换为运算符

否则,我真的不确定问题的其余部分将走向何方……除了关闭