Как насчет этого стиля программирования в JavaScript?

    var RootComponent = {

        init: function(options){
            options = jQuery.extend({name: 'Root'}, options);

            this.run('ContainerComponent.init')(options);
        }

     }

Для этого затем применяется новый метод, называемый "запустить". И это запустить метод, найденный в пути с контекстом this. Теперь, какие проблемы, вы думаете, я мог бы иметь? Спасибо

        klass.run = function(path){
                var that = this;
                return function(){
                 // here will be calculated the path, based on the input, this is just an hard coded example...
                    that.sb.klasses['ContainerComponent']['init'].apply(that, arguments);
                }
        }

1 ответ

Решение

Вы собираетесь использовать это, чтобы изменить только те объекты, которые вы контролируете? Если вы используете это на объекте, который может предоставить кто-то еще, вы будете отвергать их возможную реализацию run,

Вы можете отменить их реализацию run во всяком случае, но тогда вы можете о гарантии взломать их код.

Вы можете проверить, если run уже существует для этого объекта, но теперь ваш код зависит от структуры входящего объекта, и если вы не можете реализовать свой метод на их объекте, их код продолжит работать, но ваш может потенциально потерпеть неудачу (потому что вы бы использовать их реализацию, а не свою собственную.)

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

Другие вопросы по тегам