【问题标题】:Javascript Object with default value具有默认值的 Javascript 对象
【发布时间】:2016-03-23 02:50:03
【问题描述】:

我想要实现的目标似乎很简单,但我不确定它是否可能。

如果没有指定属性,我想要一个返回某个值的对象。例如:

console.log(obj) // Returns "123"
console.log(obj.x) // Returns "ABC"

【问题讨论】:

  • 不,这是不可能的。你需要这个做什么?
  • console.log(obj)不行,console.log(obj + '')可以办
  • 看看over here虽然
  • @Bergi 滥用该代码会以泪水告终。我支持你的第一个答案。

标签: javascript


【解决方案1】:

为您的自定义对象覆盖原型中的toString() 方法。

function MyObj() {
}
MyObj.prototype.toString = function () {
    return '123';
};
var obj = new MyObj();
obj.x = 'ABC';
console.log(obj + '');
console.log(obj.x + '');

【讨论】:

  • 正如@zb 指出的那样,这只能通过在日志调用中将对象强制转换为带有+ '' 的字符串来工作。
【解决方案2】:

下面是使用Symbol's toPrimitive 的方法:

const primaryColor = {
  default: 'green',
  darker: 'silver',
  lighter: 'white',
}

Object.defineProperty(primaryColor, Symbol.toPrimitive, {
  value: () => primaryColor.default
});

所以,我们得到了类似的东西:

console.log('primary color: ' + primaryColor.darker) // returns "primary color: silver"
console.log('primary color: ' + primaryColor) // returns "primary color: green"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-12
    • 1970-01-01
    • 2014-07-12
    • 2022-08-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多