Это немного особая проблема, так как вы хотите изменить прототип (класс, если хотите) объекта, который уже создан (экземпляр WebClient является корнем системы, поэтому он, вероятно, уже существуетвремя загрузки кода, поэтому создание нового «класса» WebClient не изменит существующего экземпляра).
В этом случае вы не можете заменить класс подклассом, вам придется заново открытькласс (аналогично Ruby), для этого существует объект include
для объектов класса, который должен работать:
openerp.mytest = function(openerp) {
openerp.web.WebClient.include({
on_logout: function() {
alert('mine');
this._super.apply(this, arguments);
}
});
}
(как в Ruby, this._super
привязан к методу, который вы заменяете, если таковые имеются, для изменений класса на месте)
Если вы проверяете файл реализации view_list_editable.js, он предоставляет примеры этого, так как ему нужно заново открыть и изменитькод listview для добавления возможности редактирования.