我如何获得原始值的参考?

时间:2015-12-25 14:49:41

标签: javascript types properties reference primitive

var number = 12345;

var obj = {};

做类似

的事情
obj.look    ((((((some operator or function to get a reference of number )))))      number

无论如何,让我们想想现在obj有一个数字的参考 所以我想这样做。

obj.look = 'abc';

console.log (number); // hopefully  'abc'

我希望它会:

  1. 不是方法(如obj.look())
  2. 但可以参考属性(如obj.look)

    所有我要问的是如何获得原始价值的参考 我相信必须有某种方式。请帮帮我。

2 个答案:

答案 0 :(得分:3)

您可以使用Object.defineProperty

var number = 12345;

var obj = {};
Object.defineProperty(obj, 'look', {
    get() {
        return number;
    },
    set(value) {
        number = value;
    }
});

document.write(obj.look + '<br>');
obj.look = 'abc';
document.write(number);

答案 1 :(得分:1)

你可以有一个对象,复制对另一个变量的引用,改变对象,因为两个变量都持有对同一个对象的引用,所以从一个变量做的任何更改也可以从另一个变量中访问。

原始值可以包装到对象(new Object)中,但不能以其他方式引用它们。字符串对象是不可变的(所有属性都是不可配置的,不可写的),并且也无法访问Number对象值。所以你不能改变任何一个对象的价值。

这意味着当你这样做:

obj.look = 'abc';

您正在擦除旧引用并在那里设置新字符串(对象或基元)。 number仍将保留旧参考,并保持不变。

所以,不。我不认为这可以用Javascript做。