Показать сообщение отдельно
  #15 (permalink)  
Старый 02.09.2012, 04:16
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

вот нашел у себя в хламе давно как то экспериментировал:
function setProto( object, proto ) {

	if ( "__proto__" in Object.prototype ) {
		return object.__proto__ = proto, object;
	}

	var protoFn = function() {},
		hasDefine = false;

	try {
		Object.defineProperty({}, 'test', {value:null});
		hasDefine = true;
	} catch( _e_ ) {}

	protoFn.prototype = proto;
	proto = new protoFn();

	for( var key in object ) {
		if ( object.hasOwnProperty( key ) ) {
			if ( hasDefine ) {
				Object.defineProperty( proto, key, Object.getOwnPropertyDescriptor( object, key ) );
			} else {
				proto[ key ] = object[ key ];
			}
		}
	}

	return proto;
}


var a = {
	get name() {
		return "Hello";
	},
	testA: function() {}
}

var b = {
	get name() {
		return Object.getPrototypeOf( this ).name + " world";
	},
	testB: "str",
	he: undefined
}

var c = {
	name: function() {
		return Object.getPrototypeOf( this ).name + " world test";
	}
}

b = setProto( b, a )
c = setProto( c, b );

alert( c.name() );
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием