ООП в Javascript, наследование: как реализовать подобное? Как реализовать подобное в javascript, если это возможно?var put = function(elem, text) { var text = encodeURIComponent(text); return { now: function(a) { var a = encodeURIComponent(a) || ''; add: function() { elem.outerHTML += text+a; } replace: function() { elem.outerHTML = text+a; } } after: function(time) { // do smth } } } Далее вызываем это как-то так:put(document.getElementById("div_id"), "Hello ").now("world!").replace; Проблема в том, что кидает ошибку на строку с replace (в данном случае, это 9): SyntaxError: function statement requires a name. Понимаю, что что-то не так, но вот что? Подскажите. Или же вообще нельзя реализовать столько "уровней вложенности"?
Да, в данном случае проблема возникает из-за некорректного синтаксиса. Вам нужно изменить ваш код следующим образом:
var put = function(elem, text) { var text = encodeURIComponent(text); return { now: function(a) { var a = encodeURIComponent(a) || ''; return { add: function() { elem.outerHTML += text + a; }, replace: function() { elem.outerHTML = text + a; } } }, after: function(time) { // do smth } } } put(document.getElementById("div_id"), "Hello ").now("world!").replace();
Изменения включают в себя использование return для возврата объектов из функций now и добавление вызова функции replace с использованием (). Теперь ваш код должен работать корректно.
Да, в данном случае проблема возникает из-за некорректного синтаксиса. Вам нужно изменить ваш код следующим образом:
var put = function(elem, text) {var text = encodeURIComponent(text);
return {
now: function(a) {
var a = encodeURIComponent(a) || '';
return {
add: function() {
elem.outerHTML += text + a;
},
replace: function() {
elem.outerHTML = text + a;
}
}
},
after: function(time) {
// do smth
}
}
}
put(document.getElementById("div_id"), "Hello ").now("world!").replace();
Изменения включают в себя использование return для возврата объектов из функций now и добавление вызова функции replace с использованием (). Теперь ваш код должен работать корректно.