enyo mixin: Это правильное использование?

У меня есть следующий код, который выглядит следующим образом:

var shared = {
    create: function(){
        //do stuff on create
    }
}

enyo.kind(enyo.mixin({
    name: "CustomInput",
    //properties unique to input.
    kind: enyo.Input
},shared));

enyo.kind(enyo.mixin({
    name: "CustomTextArea",
    //properties unique to input.
    kind: enyo.TextArea
},shared));

enyo.kind(enyo.mixin({
    name: "CustomSelect",
    //properties unique to input.
    kind: enyo.Select
},shared));

Мои сверстники сообщают мне, что это неправильный способ делать что-то и может потенциально что-то сломать или быть слишком запутанным, потому что они никогда не видели, чтобы миксины использовались таким образом.

Мой вопрос в том, есть ли что-то неправильное в том, чтобы делать это таким образом?


person user1816425    schedule 19.04.2013    source источник


Ответы (2)


Если вы расширяете виды с помощью миксинов, вот более новый способ сделать это:

enyo.createMixin({
    name: 'MyMixin',
    mymethod: function() {
        // do stuff
    }
});

enyo.Control.extend({
     mixins: ['MyMixin']
});

Это смешает его перед созданием экземпляра. Если вы хотите добавить свойства во время выполнения, используйте функцию mixin().

person Lex    schedule 21.06.2013
comment
Что значит новее? С какой версии? - person Travis Webb; 18.10.2013

Если это работает, это не так! Тем не менее, я не уверен, насколько глубоко работает enyo.mixin, поэтому иногда вы можете не получить всего, что ожидаете.

person sugardave    schedule 20.04.2013
comment
Согласно их документации, что, как я знаю, произойдет, свойства правого назначенного объекта будут иметь приоритет над левым. Так что до тех пор, пока тот, кто смотрит на код, понимает это, я не думаю, что это когда-либо будет проблемой. - person user1816425; 23.04.2013