Ну тогда у автора топика все то же самое
var todayTimeTable = new timeTable();
function timeTable(){
this.showHeader = function(){
document.write("Расписание на сегодня<br />");
}
}
timeTable.prototype = new Array;
timeTable.prototype.showFirst = function(){
document.write(this[0]);
}
// var todayTimeTable = new timeTable(); - если создать объект здесь,то все методы работают
alert(todayTimeTable instanceof timeTable)
|
Ну да, всё правильно. Наследование в JS определяется же не по функции которая создала объект, а по прототипу принадлежащему этой функции.
У меня алерт выдаёт - фолс, и правильно делает) ведь теперь его inctance другой. |
Цитата:
|
Методы это те же свойства, всё точно так же.
Или вы хотите сделать что бы когда, вы вызываете someMethod у объекта, этот метод вызывался у всех прототипов? |
Цитата:
B = inherit(function(){
this.bar = 2;
this.showBar = function(){
document.write(this.bar);
}
}, A)
Этот showBar будет только у B, у A его не будет? А можно чтобы он и у A был? |
Первым параметром вставляется обработчик нового класса, он будет вызываться только когда создаётся B. Что бы метод был в обоих классах, его нужно задавать у родителя.
A.prototype.showBar = function(){
// ...
}
Ну или если вы так желаете, можно в теле конструктора -
var A = function(){
this.showBar = function(){
//...
}
}
|
Цитата:
var A = function(){
this.foo = 1;
},
B = function(){
this.bar = 2;
};
var objA = new A();
B.prototype = objA;
var c = new B();
alert(c instanceof A); //true
alert(c instanceof B); //true
Из-за того что "лишний" объект создается? |
Цитата:
Или этот подход неверен? Вот так скрипт работает:
var todayTimeTable = new Array();
Array.prototype.showHeader = function(){
document.write("Расписание на сегодня<br />");
}
Array.prototype.showFirst = function(){
document.write(this[0]);
}
todayTimeTable.showHeader(); //Расписание на сегодня
todayTimeTable.push("Информатика");
todayTimeTable.showFirst(); // Информатика
|
mat5978,
неверно потому, что конструктор родителя вызывается когда вы создаёте новый конструктор, а это не совсем удобно/правильно. |
| Часовой пояс GMT +3, время: 00:08. |