Ну тогда у автора топика все то же самое
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, время: 19:09. |