早上好/下午
我想创建一个模拟数组的对象,对于新的浏览器没有pb我改变了我的数组的 proto 但是对于最旧版本的IE我需要知道我的错误的长度数组通过查找最后一个索引。 我找到了IE的方法:
var getLastPos = function(){
for( var i in falseArray){
//do nothing
}
return i
}
但如果存在更快的方式,那就更像了。我试图将正则表达式传递给lastindexof 但它似乎不起作用 感谢。
答案 0 :(得分:0)
如果要从数组中找到最后一个索引,请使用
<array>.length
所以你不需要for循环和你的函数,使用
falseArray.length
如果您需要上一个位置的值,请使用以下内容:
falseArray[falseArray.length-1]
//decrement by one, because the index from the array starts by 0
我希望这有用。
答案 1 :(得分:0)
谢谢你回复, 这是一个老问题,但我会回答,我的目标是创建一个错误的数组,以便不污染原型。 假数组是指一个对象,它具有与具有.length属性的数组相同的行为,并使用&#39; []&#39;。
我的结论是,只有在新的浏览器类级才允许修改原型
例如:
var myClassArray = function(){
var obj = []
obj.__proto__ = myClassArr.prototype
return obj
}
myClassArr.prototype = Array;//inheritance
myClassArr.prototype.last = function(){
return this[this.length-1]
}
或对象级别的旧浏览器
var myClassArray = function(){
var obj = []
obj.last= function(){
return this[this.length-1]
}
return obj
}
如何使用它:
var myArray = new myClassArray;
console.log(myArray.length) //0
myArray[5]=1;
console.log(myArray.length) //6
console.log(myArray.last()) //1
结论: 修改原型是一个关于性能和旧浏览器的坏主意。 您可以通过在类构造函数之外创建函数来改进旧浏览器的代码,否则浏览器将复制函数。
var last = function(){
return this[this.length-1]
}
var myClassArray = function(){
var obj = []
obj.last = last
return obj
}
var a = new myClassArray
var b = myClassArray()//In fact new is facultative
b.last == a.last //same ref no duplication