Показать сообщение отдельно
  #3 (permalink)  
Старый 18.09.2012, 11:20
Аспирант
Отправить личное сообщение для vashurin Посмотреть профиль Найти все сообщения от vashurin
 
Регистрация: 01.04.2008
Сообщений: 52

Начните с более простого примера прототипов и наследования, кстати, не требующего дополнительных функций :
function Car() {       
}
Car.prototype.constructor = Car
// Определяем новый метод "класса" Car.
Car.prototype.drive = function() {
}
//** Производный "класс" Zaporojets 
function Zaporojets() {
       
}
// Говорим, что прототип Car - "класс" Zaporojets.
Zaporojets.prototype = new Car();

// Определяем новый метод "класса" Zaporojets.
Zaporojets.prototype.crack = function() {
}

Тогда и свой код поймете быстрее. В принципе, в JS не требуется особых промежуточных функций для объявления прототипов и наследования прототипов.
Или вот еще метод работы с прототипами и наследования классов:
Car = function() {
        document.writeln("Вызван конструктор Car().<br/>");
    }
    // Определяем новый метод "класса" Car.
    Car.prototype.drive = function () {
        document.writeln("Вызван Car.drive().<br/>");
    }
    Zaporojets = function() {
        document.writeln("Вызван конструктор Zaporojets().<br/>");
        var car = new Car();
        var $this = this;
        car.color = function (color) {
            $this.color(color);
        }
        car.crack = this.crack;

        // скопировать метод drive родителя в замыкание
         var super_drive = car.drive;
         /* перекрыть метод */
        car.drive = function(distance) {
            document.writeln("Вызван Zaporojets.drive().<br/>");
            // вызвать родительский метод
            return super_drive.call(this, distance);
        }
        car.constructor = arguments.callee;
        return car;
    }
    // Определяем новый метод "класса" Zaporojets.
    Zaporojets.prototype.crack = function () {
        document.writeln("Вызван Zaporojets.crack().<br/>");
    }
    Zaporojets.prototype.color = function (color) {
        var c = color || 'white';
        document.writeln("Вызван Zaporojets.color(); Цвет: " + c + '<br/>');
    }


    document.writeln("Программа запущена.<br/>");

    // Создаем объект производного "класса" Zaporojets.
    var vehicle = new Zaporojets();
    vehicle.drive(); // вызывается функция базового объекта
    vehicle.color();
    document.writeln("<br/>---------------------------------<br/><br/>");
    // Создаем еще один объект того же класса.
    var other = new Zaporojets();
    other.crack(); // функция производного объекта
    other.color('blue');
Ответить с цитированием