我有數組,我想定製他的一些原型的方法。如果我使用:創建數組與原型的方法實現包裝數組原型
arr.push = function(){
doSomething()
Array.prototype.push.call(arguments);
}
我爲arr
創建自己的財產push
。但是我想創建一個新的類似於數組的對象,它將使用上一個示例中的方法push
進行原型設計。我試圖做出這樣的事情:
// creating new object which prototype linked to _Array.prototype
var newArr = new (function _Array(){});
// setting up method
_Array.prototype.push = function(){...}
// copying all data
arr.forEach(function(val, index){
newArr[index] = val;
});
newArr.length = arr.length
//updating original array
arr = Array.prototype.slice.call(newArr);
是的,在那之後我會得到類似數組的對象,但Array.prototype.slice回報物體不是我_Array.prototype創建數組原型綁定。
那麼我可以用自定義原型創建數組嗎?
執行後arr爲空。當我做arr.push() - 調用Array.prototype.push,而不是_Array.prototype.push。用於創建具有自定義原型的數組,其方法執行某些操作並調用Array.prototype的原始方法 – wmbtrmb 2014-10-29 13:06:37
等待。 newArr沒有屬性'push'。有用。 – wmbtrmb 2014-10-29 13:22:37
我不認爲你可以繼承Array:http://perfectionkills.com/how-ecmascript-5-still-does-not-allow-to-subclass-an-array/ – HMR 2014-10-29 14:09:25