Я хочу, чтобы иметь возможность иметь две ссылки на то же примитивное значение, и любое изменение сделано через одно должно быть отражено в другой «волшебно» - то есть с помощью кода C в качестве примера:Javascript: две ссылки на один и тот же примитив, изменяющийся в одно и то же время?
// (C code):
int value = 0;
int *p1 = &value;
...
int *p2 = &value;
*p2 = 1;
...
printf("%d", *p1); // gives 1, not 0
только Кстати, я догадался об этом, используя дополнительное объектное направление:
var a = { valueWrapper: { num: 1, str: 'initial' } };
var b = a;
// change a
a.valueWrapper.num = 2;
a.valueWrapper.str = 'changed';
// show b
console.log(b.valueWrapper.num);
console.log(b.valueWrapper.str);
// outputs:
//
// $ node test.js
// 2
// changed
Есть ли более чистый способ?
Ваш 'valueWrapper' Посредник не требуется. Если объектный литерал присваивается 'a', а' a' присваивается 'b', обе переменные будут разделять ссылку на тот же объект. –
Я спрашиваю про примитивы, хотя: «две ссылки на один и тот же примитив». – angularJsNewbie
Действительно, но что было бы неправильно с 'a = {num: 1, str:" initial "}'? Оба примитива будут разделяться между всеми переменными, которые относятся к тому же объекту, что и 'a'. Другими словами, вам нужна только одна обертка. –