我只是玩弄用Javascript創建子類的想法。我喜歡假裝擴展本地對象(如數組,字符串等)是一個壞主意。無論如何,這完全不在我的理解之中。無法擴展JavaScript原型
話雖如此,讓我們繼續吧。
我試圖做的是延長陣列(現在,extend
可能不是正確的術語,我在做什麼)
我要創建我的新類,我想有2種方法在上面。 .add
和.addMultiple
。
所以我這樣實現它。
function MyArray(){
var arr = Object.create(Array.prototype);
return Array.apply(arr, arguments);
}
MyArray.prototype = Array.prototype;
MyArray.prototype.add = function(i){
this.push(i);
}
MyArray.prototype.addMultiple = function(a){
if(Array.isArray(a)){
for(var i=0;i<a.length;i++){
this.add(a[i]);
}
}
}
這工作正常,但如果我不
console.log(Array.prototype.addMultiple);
console.log(Array.prototype.add);
我得到[Function]
和[Function]
。 所以這意味着我的代碼正在修改本地Array
對象。我正在努力避免的事情。如何以這兩個console.log
s會給我undefined
的方式更改此代碼,但我仍然可以使用像.push
這樣的原生Array.prototype
方法?
TIA
說'函數MyArray'(構造函數)的當前內容不是真的有必要嗎? – Katana314
不,這樣做不會允許我執行'MyArray.prototype.add'。 '.add'將是未定義的。 – AdityaParab
@ Katana314:不!構造函數中的'var arr = Object.create(Array.prototype);'只是表示'var arr = []'的明確方式; – AdityaParab