nerv_, а где список всех задач посмотреть?
|
FINoM, я знаю только этот способ - здесь нажать показать/спрятать задачи.
|
Собсно, вопрос, исходя из темы: какими способами можно модифицировать прототип свойствами другого объекта (или его прототипа) во время или после инициализации экземпляра конструктора?
В разделе "ваши сайты и скрипты" я предложил два метода: использовать __proto__ и тупо соединить старый прототип с новым объектом, просто копируя новые свойства. |
После долгого и нудного гугления, определил, что никак. Когда-нибудь в браузерах появится Object.setProrotypeOf, но сейчас этот метод только обсуждается.
|
вот нашел у себя в хламе давно как то экспериментировал:
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() ); |
devote, да, я тоже такое решение нашел. Но нужно не вернуть объект с новым прототипом, а привязать к уже готовому.
|
А вот зачем мне это: http://javascript.ru/forum/project/3...edovaniya.html (если ты тему раньше не заметил).
|
Цитата:
|
Цитата:
|
Цитата:
|
Часовой пояс GMT +3, время: 04:25. |