Добавление объекта в объект
Есть HTML-объект el=document.getElementById('id') и объект obj={a:{b:'c'}}. Можно ли как-нибудь добавить в el свойством b из obj.a так, чтобы изменение свойства, например, el.b='d', меняло объект на obj={a:{b:'d'}}???
|
Напиши setter (для IE6,7 событие onpropertychange)
var obj = {a: {b: "c"}}, el = document.createElement("div"); el.__defineSetter__("a", function (arg) { obj.a.b = arg; }); alert(obj.a.b); el.a = "d"; alert(obj.a.b); |
onpropertychange может быть только у DOM элементов, находящихся в дереве.
|
для решения поставленой задачи вроде бы все есть:
var obj = {a: {b: "c"}}, el = document.createElement("div"); function setter(arg) { obj.a.b = arg; } if (/*@cc_on!@*/0) { if (Object.defineProperty) { Object.defineProperty(el, "a", {set: setter}); } else { document.body.appendChild(el); el.onpropertychange = function () { if (event.propertyName == "a") { obj.a.b = this.a; } }; } } else { el.__defineSetter__("a", setter); } alert(obj.a.b); el.a = "d"; alert(obj.a.b);defineProperty в IE8 с обычными объектами нельзя использовать. Не будет работать в Opera ниже версии 9.5 |
Спасибо большое! Буду обдумывать полученную информацию:)
|
Часовой пояс GMT +3, время: 08:17. |