Показать сообщение отдельно
  #43 (permalink)  
Старый 26.08.2011, 21:30
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от systemiv Посмотреть сообщение
А кто сможет подкинуть задачу на прототипы и наследование?
Нужно попрактиковаться.
Спасибо!

вот код, который заготовлен.
есть три класса(пардон, функции) и соотв. им экземпляры.

у каждого объекта свой конструктор, свои свойства. Свой прототип не у всех.
// Parent "class"
function Parent( a, b, c){ 
    this.a=a;
    this.b=b;
    this.c=c;
 };
function ParentPrototype (){
    this._a = function(){  };
    this. _b = function(){  };
    this._c = function(){ }
};
Parent.prototype = new ParentPrototype();

// Child "class"
function Child( d, e, f ) {  this.d = d;  this.e = e; this.f = f; };


// More "class"
function More( g ) {
     this.g = g;
     this.h = function(){ };
};
function MorePrototype(){
    _g = function(){ };
};
More.prototype = new MorePrototype();


создаем экземпляры.
var parent = new Parent( 'a','b','c' );
var child = new Child( 'd','e','f' );
var more = new More( 'g' );


Задача : написать функцию mix,
которая будет возвращать новый класс(объект), конструктор которого будет принимать все аргументы из конструкторов всех трёх переданных в неё аргументов. (ЩИТО?)
var Mixed = mix( parent, child, more );
var obj = new Mixed(
    'a','b','c', // Parent
    'd','e','f', // Child
    'g'          // More
);


а так же организовывать такой доступ к свойствам\методам переданных в неё объектов (наследие)
// Parent
obj._a(), obj._b(), obj._c();

// Mix
obj.g; obj.h();

typeof obj._g === 'undefined' // => true

из последнего (третьего) объекта методы\свойства прототипа наследоваться не будут.


...
надеюсь, вам понравится старался

Последний раз редактировалось melky, 26.08.2011 в 21:59. Причина: UPD 2. поправил прототипы
Ответить с цитированием