我只是玩弄用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