使用JavaScript对象语法或jquery代码创建类本身的类成员

时间:2012-01-27 09:23:56

标签: javascript jquery oop

我有以下几点:

var Class1=function(p1,p2){
   //ctor code
}
Class1.prototype={

   method:function(){...},
   method:function(){...}
}

我希望Class2成为Class1的成员 所以我可以写:

instance2=new Class1.Class2(...)

或在Class1的方法中,我可以写:

this.instanceOfClass2=new this.Class2(...);

我知道我可以添加:

Class1.prototype={
              ...,
              Class2:function() {
              }
}
Class1.prototype.Class2.prototype={
    //Class2 methods go here
}     

但是这种语法的缺点在于它将Class2的方法放置在远离构造函数的位置。

我可以创建一个Class(ctor,methods)构造函数,然后使用

Class1.prototype={
              ...,
              Class2:Class(function() {
                             //Class2 ctor
                           },
                           {
                             //Class2 methods go here
                           }
                     }     

}

但是如果有更好的方法可以徘徊。

我感谢所有在Q的原始版本中评论使用不准确术语的人。

1 个答案:

答案 0 :(得分:1)

您似乎误解了子类化的基本原则。子类是每个定义而不是附加到父对象的另一个类,更像是继承父类的类。

考虑一下:

Class1 = function() {
  // constructor
}

Class1.prototype = {
  constructor: Class1,
  method1: function() {
    // public method
  }
};

Class2 = function() {
  //subclass constructor
}

Class2.prototype = new Class1(); // this is where the inheritance happens

var instance = new Class2();
instance.method1();

这是在javascript中处理子类化/ OOP的“经典”方式。我不确定这会有什么帮助,但知道它可能会有用。