Javascript 有没有办法创建一个扩展数组的对象?

Javascript 有没有办法创建一个扩展数组的对象?,javascript,Javascript,我已经用javascript创建了一个lexer,现在我使用数组来描述一系列的项目,现在我看到了拥有自己的range对象的用途,这样我就可以正确地区分“array”和“range array”,这样它就能读得很好 那么,有什么方法可以创建一个与Array对象非常兼容的跨浏览器子容器呢 或者更好/更简单的方法是按原样使用数组,而对于“范围数组”,我只是用自己选择的属性标记数组 比如: var myRange = [1,2,3]; myrange.isRangeObj = true; //i wo

我已经用javascript创建了一个lexer,现在我使用数组来描述一系列的项目,现在我看到了拥有自己的range对象的用途,这样我就可以正确地区分“array”和“range array”,这样它就能读得很好

那么,有什么方法可以创建一个与Array对象非常兼容的跨浏览器子容器呢

或者更好/更简单的方法是按原样使用数组,而对于“范围数组”,我只是用自己选择的属性标记数组

比如:

var myRange = [1,2,3];
myrange.isRangeObj = true;

//i would then use if(myRange.isRangeObj) to do specific range operations.
//However i still think myRange instanceof Range reads better

使用javascript中的组合创建扩展数组的对象:

function Range(arr) {
  this.arr = arr;
}

var myRange = new Range([1, 2, 3]);

if (myRange instanceof Range) {
    doSomethingWithRange(myRange.arr);
}
您可以使用以下选项:

Array.prototype.isRangeObj = false;

因此,您创建的所有数组都将具有属性
isRangeObj

,为什么您需要检查它?在
myRange
变量中不应该有非rangy值。
if(typeof myRange=='object')
可能吗?是的,但我没有任何自定义逻辑,我只想区分range数组和普通数组,以后会有其他不同的数组类型。我主要希望能够使用与Array对象中相同的函数,并且能够将其区分为RangeNo类型的对象。我想这是一个解决方案。我需要把它添加到原型中吗?将它添加到数组的单个实例中还不够吗<代码>var arr=[];arr.isRangeObj=false。这样我就不会弄乱数组的全局范围。好吧,我真的不需要将它添加到原型中,就像你说的,我只能添加到单个实例中,但是
数组的其他实例将返回
未定义的
用于
isRangeObj
,因此取决于具体情况,如果
未定义的
足够,因此,最好将其添加到单个实例中。