Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   цепочка наследование (https://javascript.ru/forum/events/33034-cepochka-nasledovanie.html)

neWjs 08.11.2012 10:43

цепочка наследование
 
возникла такая проблема есть несколько больших обьектов и нужно сделать между ними цепочку наследования - задача не сложная если бы они не подгружались в формате JSON , к примеру
var f = {
 f:"1"
};


var f1 = {
 f1:"2",
 inherit:f // если есть это свойство то унаследовать обьект в нем
};

из за того что нужно прочитать свойство inherit через конструктор не сделаешь
function f() {
 this.f = "1";

};


единственная идея что пришла в голову , так как обьект передается в массиве можно сделать так
[function f1(){
this.f = "1";
},2];// значение совйтсва inherit , храниться в том же массиве что и функция


но так как это не удобно, можете что то по советовать?

Skipp 08.11.2012 11:21

Что-то мне кажется ты намудрил, зачем тебе свойство inherit?
Объясни подробнее, чего ты хочешь сделать этим.

neWjs 08.11.2012 11:37

да все просто ,есть обьекты и другим обьктам нужно унаследовать сойства и методы.

Skipp 08.11.2012 12:00

Ну так в чём проблема?:)
for(.. in ...)

cyber 08.11.2012 12:06

тупо скопирова методы не самый лучший вариан.

cyber 08.11.2012 12:15

тупонул совместил 2 комента,один писал на хабре другой тут,писал с телефона и забыл где пишу))
Суть в том зачем копировать если можно наследовать.

Skipp 08.11.2012 12:16

эммм, раздвоение личности?
Цитата:

Сообщение от cyber
Суть в том зачем копировать если можно наследовать.

При таком раскладе:
var obj = {...}

Объекты у тебя наследуют только встроенные свойства и методы объекта Object, прости за тавтологию.
Есть вариант создания объектов, через свой конструктор, так что-то да получиться.

Или же тупо сращивать через цикл, что не является плохим тоном, в таких случаях.

cyber 08.11.2012 12:26

Цитата:

Сообщение от Skipp (Сообщение 214742)
эммм, раздвоение личности?
.

Нет просто втык:
"тупонул совместил 2 комента,один
писал на хабре другой тут,писал с
телефона и забыл где пишу))".
А по теме :
Не вижу смысла в копирование свойство и методов, я знаю что нельзя менять __прото__ обьектов во всех браузерах, но копирования мне не кажеться самым лучшим вариантом....

Skipp 08.11.2012 12:48

Вот так правильно:
Цитата:

Сообщение от cyber
мне не кажеться

Так как придётся, либо используй свои конструкторы.

cyber 08.11.2012 12:57

в полне реально, есть вариантик , прийду домой скину

cyber 08.11.2012 17:51

можно так замутить
function inherit(obj, prop) {
      
      var res = obj[prop]; 
      
       while(!res) {
         
          obj = obj.inherit;  
         
       
         res = obj[prop];
         
       
       };
      
       return res;
     };

, копирование тоже вполне нормальный вариант для javascript (был бы доступ к __proto__ во всех браузерах..)


Часовой пояс GMT +3, время: 02:14.