Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   функция inherit для нескольких объектов (https://javascript.ru/forum/misc/31872-funkciya-inherit-dlya-neskolkikh-obektov.html)

bot87 24.09.2012 09:40

функция inherit для нескольких объектов
 
привет.
Как в такую функцию передавать много объектов за раз?
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
Как в такую функцию передавать много объектов за раз?

Массив?

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

Цитата:

Сообщение от bot87
нет именно через запятую

Так передавай сколько хочешь... Чего испугался-то? :)
Цитата:

Функции можно запускать с любым числом параметров.
http://javascript.ru/basic/functions#parametry-funkcii


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