在javascript中将元数据添加到基元

时间:2017-05-05 14:35:26

标签: javascript oop object

背景

我们将大部分数据格式化为

var X = {value:'some val',error:'maybe an error',valid:true}

  • 因此我们发现自己一直在调用X.value。
  • 我们几乎没有使用.error或.valid,但我们确实使用它。

我想要什么

要在任何地方退出调用.value,但仍然可以访问每个数据点级别的元数据。

问题

是否有一个

A)将元数据放在基元上的方法?例如将.error附加到int? bool或字符串是否可能?

B)一种创建可以作为基元处理的类的方法,在我这样做时提供特定的数据成员? IE X.value = 5,X + 3返回8.

C)我们的数据更好的设计?我们是不是以某种方式把这个弄错了?

2 个答案:

答案 0 :(得分:1)

您可以将方法toString()设置为您的对象并返回value

var X = {
  value: 1,
  error:'maybe an error',
  valid:true,
  
  toString: function() {
    return this.value;
  }
}

X.value = 5;
console.log(X+3);

答案 1 :(得分:0)

您可以将数据表示为也具有属性的函数对象:



var X = () => 1;
X.value = 1;
X.error = 'maybe an error';
X.valid = true,

console.log(X()); // 1
console.log(X.valid); // true




为了更好的设计,您可以将数据对象的创建封装在另一个函数中。