Стандарт явно говорит что примитивные типы копируются по значению;
т.е. в строке "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 не поддерживает стандарт по этому такой код там может не работать