Вход

Просмотр полной версии : функция inherit для нескольких объектов


bot87
24.09.2012, 09:40
привет.
Как в такую функцию передавать много объектов за раз?
function inherit(p){
if(p==null) throw TypeError()
if(Object.create) return Object.create(p)
var t=typeof p;
if(t !=='object' && t!=='function' ) throw TypeError()
function F() {}
F.prototype = p;
return new F;
}

Делаю так:
function inherit2(p){
for(j=0;j<arguments.length;j++){

p=arguments[j];
if(p==null) throw TypeError()
//if(Object.create) return Object.create(p)
var t=typeof p;
if(t !=='object' && t!=='function' ) throw TypeError()
function F() {}
F.prototype = p;
return new F;
}
}
var o2=inherit2({o:34},{po:12},{la:222})
alert(o2.o+':'+o2.po+':'+o2.la+':')//34 underfined underfined
2 Вопрос
var obj2={name:'tolya',tooL:'str'}
var obj=inherit(obj2)
delete Object.getPrototypeOf(obj).name
alert(obj2.name)
как такого же добится в ие?

ksa
24.09.2012, 10:43
Как в такую функцию передавать много объектов за раз?
Массив?

bot87
24.09.2012, 10:52
нет именно через запятую,чтобы наследовались сразу от нескольких объектов.
Пробую
var arr=[{o:34},{po:12},{la:222}]
function inherit2(p){
for(j=0;j<p.length;j++){

p=p[j];
if(p==null) throw TypeError()
//if(Object.create) return Object.create(p)
var t=typeof p;
if(t !=='object' && t!=='function' ) throw TypeError()
function F() {}
F.prototype = p;
return new F;
}
}
var o2=inherit2(arr)
alert(o2.o+':'+o2.po+':'+o2.la+':')
Та же ерунда

ksa
24.09.2012, 14:10
нет именно через запятую
Так передавай сколько хочешь... Чего испугался-то? :)
Функции можно запускать с любым числом параметров.
http://javascript.ru/basic/functions#parametry-funkcii