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:31. |