Показать сообщение отдельно
  #3 (permalink)  
Старый 25.12.2014, 20:43
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,126

Стандарт явно говорит что примитивные типы копируются по значению;

т.е. в строке "cb=b=1" переменным присваивается значение примитивного типа и никак такое поведение обойти невозможно;

но можно добиться схожего поведения через сеттеры и гетеры
function MyType (par){
	this._val = par;
};
MyType.prototype = {
	set val(p) {return this._val = p},
	get val() {return this._val}
};
cd = b = new MyType (1);;

b.val = 15;
alert (cd.val);

b.val = b.val + b.val + b.val;
alert (cd.val);

к переменным придется обращатся не как к "cd" , "b" а как "cd.val" и "b.val"
IE не поддерживает стандарт по этому такой код там может не работать
Ответить с цитированием