问题:
是否可以重新定义基础对象valueOf以返回内部道具?
let obj = {
x: 1,
y: 2
}
obj // 2 <- the value of obj.y
obj.x // 1
obj.y // 2
答案 0 :(得分:1)
valueOf
,toString
和toJSON
可用于处理部分(但不是全部)情况:
var obj = { a: 1,
b: 2,
c: 3,
toJSON : function() { return this.a },
valueOf : function() { return this.b },
toString: function() { return this.c } }
console.log( obj, +obj, `${obj}` )
答案 1 :(得分:0)
当然可以定义一个返回成员的valueOf
方法,但是您仍然需要以某种方式调用该方法-隐式地在转换中或显式地。 valueOf
并不能神奇地使obj
本身变得与众不同。
const obj = {
x: 1,
y: 2,
valueOf() {
return this.y;
}
};
console.log(obj);
console.log(obj.x, obj.y)
console.log(obj.valueOf())
console.log(obj + 5)
console.log("y: " + obj)