Задачка про ООП и наследование
Не могу сообразить как можно провернуть следующее:
Есть функция 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, время: 20:28. |