Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.07.2010, 12:44
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Добавление объекта в объект
Есть HTML-объект el=document.getElementById('id') и объект obj={a:{b:'c'}}. Можно ли как-нибудь добавить в el свойством b из obj.a так, чтобы изменение свойства, например, el.b='d', меняло объект на obj={a:{b:'d'}}???
Ответить с цитированием
  #2 (permalink)  
Старый 07.07.2010, 17:24
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Напиши 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);

Последний раз редактировалось Octane, 07.07.2010 в 17:33.
Ответить с цитированием
  #3 (permalink)  
Старый 07.07.2010, 17:31
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

onpropertychange может быть только у DOM элементов, находящихся в дереве.
Ответить с цитированием
  #4 (permalink)  
Старый 07.07.2010, 17:50
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

для решения поставленой задачи вроде бы все есть:
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

Последний раз редактировалось Octane, 07.07.2010 в 17:56.
Ответить с цитированием
  #5 (permalink)  
Старый 07.07.2010, 17:51
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Спасибо большое! Буду обдумывать полученную информацию
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объект как свойство объекта Cooskon Общие вопросы Javascript 6 16.02.2010 21:41
Как по событию вызвать метод определенного экземпляра объекта jvs jQuery 3 24.12.2009 16:04
Получить объект содержащий caller no_alex Общие вопросы Javascript 14 20.03.2009 21:37
как узнать тип значения объекта? VHS Общие вопросы Javascript 1 07.01.2009 23:57
Можно ли получить имя экземпляра объекта внутри самого объекта? Ichigeki Общие вопросы Javascript 9 14.11.2008 19:00