используя синтаксис объекта JavaScript или код jquery для создания членов класса, которые сами являются классами - PullRequest
0 голосов
/ 27 января 2012

У меня есть что-то вроде следующего:

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
}     

но этот синтаксис имеет недостаток в том, что он помещает методы класса 2 «далеко» от конструктора.

Я мог бы создать Class(ctor,methods) конструктор и затем использовать

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

}

но бродил, если есть лучший способ сделать это.

Спасибо всем, кто прокомментировал неточность использования терминов в оригинальной версии Q.

1 Ответ

1 голос
/ 27 января 2012

Кажется, вы неправильно поняли фундаментальные принципы создания подклассов.Подкласс по определению не является другим классом, прикрепленным к родительскому объекту, скорее как класс, который наследует родительский класс.

Учтите это:

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.Я не уверен, что это помогает, но это может быть полезно знать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...