Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите с пониманием наследования (https://javascript.ru/forum/misc/33385-pomogite-s-ponimaniem-nasledovaniya.html)

deivan 21.11.2012 13:48

Помогите с пониманием наследования
 
Собственно, задача такая:

есть глобальная функция setContent, которая добавляет к BODY некий контент.
нужно - написать функцию, которая "перехватывает" setContent и добавляет к ее контенту добавочное содержимое.

function setContent() {
    var p = document.createElement("DIV");
    p.innerHTML = "<p>I get this data from somewhere and i pit this into BODY</p>";
    document.body.appendChild(p);
}
// хочу написать функцию, которая использует работу setContent и добавляет ей еще немного работы:
function myContent() {
     setContent.call(...) // нужно использовать эти методы? Если да, то как?..

     myFunc.prototype=setContent; // или использовать прототип?

     function myFunc() {
           // если прототип, то каким образом влиять на него в контексте наследника?..
           var str="<b>добавьте меня, плииииззз...</b>" // вот это хочу добавить к контенту из setContent, как?...
     }
}

ksa 21.11.2012 14:00

Насколько я понимаю...
- Наследование применяется к объектам
- Наследование не даёт "перехвата" некой функции

Skipp 21.11.2012 14:12

переопредели функцию и всё или же перепиши начальную, по другому не выйдет.

deivan 21.11.2012 14:29

Цитата:

Сообщение от Skipp (Сообщение 217083)
переопредели функцию и всё или же перепиши начальную, по другому не выйдет.

а могли бы привести пример переопределения, в контексте моего примера?..
(мне с примерами легче воспринимать)

Skipp 21.11.2012 14:42

Цитата:

Сообщение от deivan
а могли бы привести пример переопределения, в контексте моего примера?..
(мне с примерами легче воспринимать)

Это просто
function setContent(){
    alert(1);
}
function setContent(){
    alert(2);
}
setContent()

deivan 21.11.2012 15:10

ну а как же быть с обязательной необходимостью сохранения собственно контента?..
setContent добавляет объект в ДОМ, переопределение не даст возможности это добавление модернизировать поскольку переопределением этот объект будет убит...

Skipp 21.11.2012 15:19

Цитата:

Сообщение от deivan
setContent добавляет объект в ДОМ, переопределение не даст возможности это добавление модернизировать поскольку переопределением этот объект будет убит...

Не объект, а функция и она будет не убита а переопределена, ты можешь копировать функцию которая была и дописать своё, то что тебе нужно.

function setContent() {
    var p = document.createElement("DIV");
    p.innerHTML = "<p>I get this data from somewhere and i pit this into BODY</p>";
    document.body.appendChild(p);
}

function setContent() {
    var p = document.createElement("DIV");
    p.innerHTML = "<p>I get this data from somewhere and i pit this into BODY допиши то что надо и где надо и всё</p>";
    document.body.appendChild(p);
}

deivan 21.11.2012 15:35

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

а нет ли в спецификации каких-либо системных событий, предществующих записи в ДОМ?..

Skipp 21.11.2012 16:10

Ты конечно меня не понял, ну ладно.
Смотри тут

Aetae 21.11.2012 16:46

Имелось ввиду вот это:
function setContent(msg) {
    alert(msg)
}
setContent('Вася')

setContent = function(old) {
    return function(msg){
         old(msg + '-дурак')
    }
}(setContent)

setContent('Вася')


Часовой пояс GMT +3, время: 12:37.