原型声明的函数不是函数
Prototype declared function is not a function
var AnArray=(function(){
var anArray=[];
AnArray.prototype.getAnArray=function(){
return anArray;
}
AnArray.prototype.setArray=function(id,val){
anArray[id]=val;
}
});
var objAnArray=new AnArray();
console.log(objAnArray.getAnArray());
当我尝试调用 objAnArray.getAnArray();
时,return它不是一个函数
但是下面这个工作正常
var Index=(function(){
var Index=1;
Index.prototype.getIndex=function(){
return Index;
}
Index.prototype.setIndex=function(val){
Index=val;
}
});
var objIndex=new Index();
console.log(objIndex.getIndex());
原型是否无法 return 数组?
您正在使用 anArray
作为对象,而不是数组。使用:
this.anArray = {}; // not []
你的代码看起来也很奇怪。您在构造函数中声明原型。改为这样声明:
function AnArray() {
this.anArray = {};
}
AnArray.prototype.getArray=function(){
return this.anArray;
}
AnArray.prototype.setArray=function(id,val){
this.anArray[id]=val;
}
在您的构造函数中,您重新声明原型并将每个实例中的私有变量 anArray
绑定到 AnArray
的最后一个实例。
与Index
相同。
这表明了不良行为:
var AnArray=(function(){
var anArray={};
AnArray.prototype.getArray=function(){
return anArray;
}
AnArray.prototype.setArray=function(id,val){
anArray[id]=val;
}
});
var a = new AnArray();
var b = new AnArray();
a.setArray("foo", "bar");
b.getArray(); // { foo: "bar" }
var AnArray=(function(){
var anArray=[];
AnArray.prototype.getAnArray=function(){
return anArray;
}
AnArray.prototype.setArray=function(id,val){
anArray[id]=val;
}
});
var objAnArray=new AnArray();
console.log(objAnArray.getAnArray());
当我尝试调用 objAnArray.getAnArray();
时,return它不是一个函数
但是下面这个工作正常
var Index=(function(){
var Index=1;
Index.prototype.getIndex=function(){
return Index;
}
Index.prototype.setIndex=function(val){
Index=val;
}
});
var objIndex=new Index();
console.log(objIndex.getIndex());
原型是否无法 return 数组?
您正在使用 anArray
作为对象,而不是数组。使用:
this.anArray = {}; // not []
你的代码看起来也很奇怪。您在构造函数中声明原型。改为这样声明:
function AnArray() {
this.anArray = {};
}
AnArray.prototype.getArray=function(){
return this.anArray;
}
AnArray.prototype.setArray=function(id,val){
this.anArray[id]=val;
}
在您的构造函数中,您重新声明原型并将每个实例中的私有变量 anArray
绑定到 AnArray
的最后一个实例。
与Index
相同。
这表明了不良行为:
var AnArray=(function(){
var anArray={};
AnArray.prototype.getArray=function(){
return anArray;
}
AnArray.prototype.setArray=function(id,val){
anArray[id]=val;
}
});
var a = new AnArray();
var b = new AnArray();
a.setArray("foo", "bar");
b.getArray(); // { foo: "bar" }