Namespacing继承父对象的方法

时间:2012-10-05 09:34:24

标签: javascript

使用命名空间和对象时遇到问题。我是新手,所以真的很困惑。 我希望数组中的一个对象继承父对象方法。

这是我的代码:

 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?这是原型使用的吗?

返回“Uncaught TypeError:Object [object Object]没有方法'myfunc2'”

1 个答案:

答案 0 :(得分:0)

正如我所见,你想拥有&#34; obj&#34;在您正在创建的对象中

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

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

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();

然后&#34;这个&#34; (obj)是创建对象的原型