任何方式来创建一个扩展数组的对象?
我已经在javascript中创建了一个词法分析器,并且我现在使用一个数组来描述一系列项目,现在我可以看到使用自己的Range对象,因此我可以正确区分“数组”和“范围数组”以这样的方式读得很好。任何方式来创建一个扩展数组的对象?
那么有什么办法可以创建一个巨大的跨浏览器兼容的Array对象的sublcass?
或者更好/更简单的方法就像使用数组一样,对于“范围数组”我只是用我自己选择的属性标记数组?
是这样的:在JavaScript
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
您可以使用此:
Array.prototype.isRangeObj = false;
因此,所有创建的阵列由你将有财产isRangeObj
我需要将它添加到原型吗?将它添加到数组的单个实例是不够的吗? 'var arr = []; arr.isRangeObj = false'。这样我就不会混淆数组的全局范围。 – netbrain 2013-02-22 09:29:04
那么,我真的不需要将它添加到原型,就像你说的,我只能添加到单个实例,但其他'Array'实例将返回'undefined'为'isRangeObj',所以取决于案例,如果'undefined'就够了,所以最好将它添加到一个实例中。 – 2013-02-22 09:56:39
使用组成创建扩展数组的对象:
function Range(arr) {
this.arr = arr;
}
var myRange = new Range([1, 2, 3]);
if (myRange instanceof Range) {
doSomethingWithRange(myRange.arr);
}
我想这是一个解决方案。 – netbrain 2013-02-21 11:39:07
为什么你需要检查?你在'myRange'变量中不应该有非常值的值。 – Bergi 2013-02-21 11:06:27
'if(typeof myRange =='object')'maybe? – Popnoodles 2013-02-21 11:06:36
是的,但我没有任何自定义逻辑,我只是想区分一个范围数组和一个正常数组,稍后会有其他不同的数组类型。主要我想能够使用Array对象中存在的相同函数,并且能够将它区分为类型范围的对象。范围 – netbrain 2013-02-21 11:07:17