Показать сообщение отдельно
  #1 (permalink)  
Старый 30.06.2011, 01:17
Кандидат Javascript-наук
Отправить личное сообщение для TicTac Посмотреть профиль Найти все сообщения от TicTac
 
Регистрация: 07.09.2010
Сообщений: 133

Унаследовать без привязки к объектам
/*Базовый*/
        function X(x) {
			this.x = x;
		}
        X.prototype.getX = function(){return this.x;}
        var x = new X(5);

        /*Y*/
        function Y(y) {
            this.y = y;
        }
        Y.prototype = x; /*Наследем свойства/методы объекта x*/
        Y.prototype.getY = function(){return this.y;}
        var y = new Y(7);

        /*Add*/
        function Add() {
			this.add = this.getX() + this.getY();
		}
        Add.prototype = y; /*Наследем y, + свойства/методы объекта x*/
        Add.prototype.getAdd = function(){return this.add;}


        var addTwoNum = new Add();
        console.log(addTwoNum.add);


Немножко туповато вышло, но я получил унаследованные свойства/методы из выше по иерархии "классов".

Можно как то переделать код чтобы не так наследовать Y.prototype = x; и Add.prototype = y;, то есть по сути мне нужно сначала создать объекты x,y их инициализировать и наследовать.

А как то так
Y.prototype = X.prototype;
Add.prototype = Y.prototype;

И потом когда все будет в объекте типа Add(), туда передавать два значения x и y (new Add(5,7)), а там уже должны быть свойства
this.x = x;
this.y = y;
X.prototype.getX = function(){return this.x;}
Y.prototype.getY = function(){return this.y;}

Выходит все тоже самое просто убить создание промежуточных объектов
var x = new X(5);
var y = new Y(7);
Ответить с цитированием