Как объединить параметры по умолчанию в объектах-прототипах - PullRequest
2 голосов
/ 06 июня 2011

Я ищу простой способ объединения объекта параметров в объекте класса прототипа.

У меня есть родительский "абстрактный" класс, подобный этому:

var ParentClass = Class.create({

initialize : function(someattributes, options ){
         this.someattributes = someattributes;
         this.options = Object.extend({
              foo : "foostring",
              bar : 1337
    }, options || {});
    }   
 });

и дочерний класс, который расширяет ParentClass как таковой:

var ChildrenClass = Class.create(ParentClass {

initialize : function($super, someattributes, options ){
         $super(someattributes, options);
         this.options = Object.extend({
              wheez : "wheezstring",
              bling : 123456
    }, options || {});
    }   
});

Таким образом, идея состоит в том, чтобы иметь некоторые параметры по умолчанию в родительском классе и некоторые параметры по умолчанию в дочернем классе но детский объект параметров класса должен быть расширением родительских параметров класса obejct;

как правильно объединить два объекта параметров при инициализации дочернего класса?

Надеюсь, я достаточно ясно ...

Спасибо

1 Ответ

2 голосов
/ 06 июня 2011

Предполагая, что инициализатор родительского класса будет вызван ко времени вызова инициализатора дочернего класса, вы можете использовать элемент options, который инициализируется родительским классом:

Object.extend(Object.extend(this.options, {
    wheez: "wheezstring",
    bling: 123456
}), options || {});
...