如何在JavaScript中跟踪字符串变量

时间:2015-04-01 04:59:00

标签: javascript string prototype ecmascript-5

要求: 通过为每个变量分配唯一ID ,能够跟踪 javascript 中的字符串变量。

示例:

var a = 'alkd';
var b = 'iquwq';  
console.log(a.id); # 1234
console.log(b.id); # 5678

我尝试了什么:我尝试通过向'String.prototype添加新的方法属性来扩展字符串对象“

输出:

console.log(a.id); #1234
console.log(b.id); #1234 (returning same id as above)

我观察到的内容 String.prototype 继承了继承的字符串实例。对 String.Prototype 对象的更改将传播到所有 String 实例。

示例:

a.id = 8783; # setter
console.log(b.id)# returns 8783

我的问题:

  1. 实际上是否可以通过扩展 String Object 来获得所需的功能?
  2. 有没有另外一种方法可以做到这一点?
  3. 是否有计划将此功能添加到ECMAScript的未来版本中?

2 个答案:

答案 0 :(得分:1)

也许我完全不明白你要做什么,但如果你想为变量分配一个id,并且还有一个getc和setter的变量值,你可以只使用一个json对象< / p>

// initialize
var a = {id: 0, value: "zero"};

// get
console.log(a.id);
console.log(a.value);

// set
a.id = 1;
a.value = "one";

// get
console.log(a.id);
console.log(a.value);

答案 1 :(得分:0)

回答你的问题:

1)不。你观察到的是正确的。修改原型会影响使用该原型的所有对象。见https://developer.mozilla.org/en-US/docs/Web/JavaScript/Inheritance_and_the_prototype_chain

2)是的。您可以使用如下的简单对象,而不是使用基元:

var a = {
    id: 1234,
    value: "abc"
};
var b = {
    id: 5678,
    value: "def"
};

3)可能不是......见1:)