0

命名空间和对象有问题。我对此很陌生,所以真的很困惑。我希望数组中的一个对象继承父对象方法。

这是我的代码:

 var obj = {

   arr1:['one', 'two'],
   arr2:[],

   init:function() {
       for(var x=0; x<this.arr1.length; x++) {
           this.arr2.push(new this.myfunc1(x, this.arr1[x]));
       }
       this.arr2[0].myfunc2();
   },

   myfunc1:function(x, name) {
        this.index = x;
        this.name = name;
   },

   myfunc2:function() {
        alert(this.index + ' ' + this.name);
   }

};

obj.init();

如何为我的 arr2 对象继承 myfunc2?这是原型使用的吗?

返回“未捕获的类型错误:对象 [对象对象] 没有方法 'myfunc2'”

4

1 回答 1

0

如我所见,您希望在您正在创建的对象中拥有“obj”的方法

this.arr2.push(new this.myfunc1(x, this.arr1[x]));

很简单,这些对象的构造函数是 this.myfunct1() 所以你必须在构造函数的原型属性中赋值原型对象:

this.myfunct1.prototype = this;

for(var x=0; x<this.arr1.length; x++) {
    this.arr2.push(new this.myfunc1(x, this.arr1[x]));
}

// WORKS!!!
this.arr2[0].myfunc2();

然后“this”(obj)就是创建对象的原型

于 2012-10-05T10:59:04.640 回答