Javascript 有没有办法创建一个扩展数组的对象?
我已经用javascript创建了一个lexer,现在我使用数组来描述一系列的项目,现在我看到了拥有自己的range对象的用途,这样我就可以正确地区分“array”和“range array”,这样它就能读得很好 那么,有什么方法可以创建一个与Array对象非常兼容的跨浏览器子容器呢 或者更好/更简单的方法是按原样使用数组,而对于“范围数组”,我只是用自己选择的属性标记数组 比如:Javascript 有没有办法创建一个扩展数组的对象?,javascript,Javascript,我已经用javascript创建了一个lexer,现在我使用数组来描述一系列的项目,现在我看到了拥有自己的range对象的用途,这样我就可以正确地区分“array”和“range array”,这样它就能读得很好 那么,有什么方法可以创建一个与Array对象非常兼容的跨浏览器子容器呢 或者更好/更简单的方法是按原样使用数组,而对于“范围数组”,我只是用自己选择的属性标记数组 比如: var myRange = [1,2,3]; myrange.isRangeObj = true; //i wo
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
,因此取决于具体情况,如果未定义的足够,因此,最好将其添加到单个实例中。