Задачка про ООП и наследование
Не могу сообразить как можно провернуть следующее:
Есть функция A() и объект B{}. "А" является еще и объектом, который содержит некоторые методы. ( A.custom ) "B" имеет свои методы (B.test = '...') и наследует методы от "A" Функция A() - Выводит обьект B, который имеет как свои методы, так и унаследованные от A: ( А().custom; A().test ) Обьект A - только свои методы: ( A.custom ) Возможно ли такое? |
возможно
|
Видимо не правильно задал вопрос.
Если такое возможно, то как это сделать. Покажите пожалуйста. |
A.prototype= A
|
A = function () { return B; }; A.prototype.custom = "OK"; B = function () {}; B.prototype = A.prototype; B = new B(); |
tenshi, ну что у вас за ответы.
melky, этот способ я тоже делал, но он не работает A = function () { return B; }; A.prototype.custom = "OK"; B = function () { this.test = "Test" }; B.prototype = A.prototype; B = new B(); console.log( A.custom ) //undefined |
а что с моими ответами не так?
|
Цитата:
Мне нужно что бы результат был следующим: Функция A() - Выводит обьект B который имеет как свои методы, так и унаследованные от A: ( А().custom; A().test ) Обьект A - Выводит только свои методы: ( A.custom ) |
Цитата:
new A().custom Цитата:
объект по себе ничего сам не выводит! |
Цитата:
Цитата:
|
Возможно если B.prototype = new A(), но A должна оставаться функцией.
|
Функции вроде как являются уже объектами.
var fun = function (msg) { alert(msg); }; fun.data = 'Hello'; fun.mtd = { q: 1, w: function () { alert(2000); } }; fun('Привет, я функция'); fun.mtd.w(); alert(fun.data); alert(fun.mtd.q); |
Цитата:
Получается не возможно такое провернуть что я хочу? |
Цитата:
Цитата:
A = function () { return B; }; A.custom = "OK"; // вместо этого { B = function () {}; B.prototype = A; B = new B(); // } // можно было написать // B = Object.create(A); B.CASTOM = "castom!!!"; alert( A().custom ); alert( B.custom ); alert( A.custom ); alert(B.CASTOM); alert(A.CASTOM); |
melky,
СПАСИБО! Так работает. Ура! |
Часовой пояс GMT +3, время: 00:11. |