2014-01-09 3 views
1

У меня есть плагин, у которого есть метод класса, который я хочу добавить. Поскольку это плагин WordPress, я не могу редактировать их код, поскольку будущие обновления нарушат мои изменения.Изменить существующий метод класса JavaScript

Как добавить это:

alert('bar'); 

методу редактирования ниже:

var builder_blvd = { 
    // Lots of stuff here 
    edit : function (name, page) { 
     alert('foo'); 
    } 
    // Lots of other stuff here 
}; 

Результат должен быть 2 сообщения с предупреждениями, один для 'Foo', а другой для 'бара'? Является ли это выполнимым или мне нужно создать новую копию всего класса builder_blvd?

ответ

5
(function() { 
    var original = builder_blvd.edit 
    builder_blvd.edit = function(name, page) { 
     original.call(builder_blvd, name, page); 
     alert('bar'); 
    } 
}()); 

builder_blvd.edit(); 

Демо: http://jsfiddle.net/xdrh5/

+0

Этому спасибо! – spyke01

1

Другие плакаты предложили несколько хороших решений. Но spyke01, вы никогда не знаете, если в следующей версии плагина, если автор может принять решение сделать что-то же просто, как это:

edit : function (name, page) { 

получает изменено на

edit : function (page, name) { 

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

Удачи.

+0

Спасибо, это отличный момент, и я обязательно его запомню. – spyke01

Смежные вопросы