Показать сообщение отдельно
  #11 (permalink)  
Старый 15.04.2011, 14:13
Аватар для балерун
Аспирант
Отправить личное сообщение для балерун Посмотреть профиль Найти все сообщения от балерун
 
Регистрация: 16.11.2009
Сообщений: 79

Сообщение от Skipp Посмотреть сообщение
балерун,
ну понятное дело, так как в этой функции идёт обьявление другой.
obj.original = function(){
// А это переопределить нельзя?
}


var obj= {};
obj.original = function()
{
    function oldCompute(){ return "Я глобальная функция хоть и в теле другой и всем пофиг где я лежу"; }
    function other1(){return "other1"; }
    function other2(){return "other2"; }
    return oldCompute() + "\n" + other1() + "\n" + other2();
}


function oldCompute(){ return "Надо всего лишь попробовать."; }
alert(obj.original());
obj.original = function()
{
    function oldCompute(){ return "Надо всего лишь попробовать 2."; }
    function other1(){return "other1"; }
    function other2(){return "other2"; }
    return oldCompute() + "\n" + other1() + "\n" + other2();
}
alert(obj.original());

Во, это уже близко. Мне нужно изменить поведение только oldCompute, а функции other1, other2, проч. не трогать. А то получается, что я целиком копирую первоначальный код и в нем меняю одну функцию.
Как-нибудь можно частично переопределить, что ли?
Получилось, что разработчик первоначального кода, решил, что функции в будущем меняться не будут и закрыл их внутри, а мне понадобилось изменить... и чужой код править не хочется.
Ответить с цитированием