Как я могу реализовать частичные классы в JavaScript?

Как я могу реализовать частичные классы в JavaScript?

Например, у меня есть такой класс:

function MyClass(){
    this.myName = "I am native member";
};

myObj = new MyClass();
console.log(myObj.myName); // Will print "I am native member"

Я хочу, чтобы некоторые свойства этого класса были объявлены где-то еще в другом фрагменте кода, возможно, в другом файле. Я могу легко расширить myObj в JavaScript, но затрагивается только myObj, а не другие экземпляры MyClass. Я хочу, чтобы новые экземпляры класса включали все определения из частичных расширений.


person Dhrumil Bhankhar    schedule 30.01.2014    source источник


Ответы (1)


Начиная с этого фрагмента кода:

function MyClass(){
    this.myName = "I am native member";
    for (var key in MyClass.Partial) {
        MyClass.Partial[key].apply(this, arguments);
    }
};
MyClass.Partial = {};

Если я хочу расширить класс в другом месте, я могу написать:

MyClass.Partial.Def1 = function(){ 
   /* here Def1 is just a meaningful name. 
      It has no impact on MyClass access behavior 
   */
    this.myLastName = "I am partial member";
};

myObj = new MyClass();
console.log(myObj.myName); // Will print "I am native member"
console.log(myObj.myLastName); // Will print "I am partial member"
person Dhrumil Bhankhar    schedule 30.01.2014