Показать сообщение отдельно
  #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.
Ответить с цитированием