[]和{}的toString和valueOf的结果分别是什么?
在JavaScript中,[] 和 {} 分别代表空数组和空对象。toString 和 valueOf 是JavaScript中所有对象都有的方法,但它们的行为会根据对象的类型有所不同。
对于空数组 []
toString(): 当对空数组调用toString()方法时,它会返回一个空字符串""。但实际上,对于非空数组,toString()会返回一个由数组中每个元素的字符串形式拼接而成的新字符串,元素之间用逗号,分隔。对于空数组,因为没有元素,所以结果是空字符串。但请注意,这个行为可能会被数组中的元素自己的toString()方法覆盖。valueOf(): 对于数组,valueOf()方法返回数组本身。所以,如果你对空数组调用valueOf(),你会得到这个空数组[]。
对于空对象 {}
toString(): 当对空对象调用toString()方法时,它通常返回一个表示该对象的字符串,格式为"[object Object]"。这是Object.prototype.toString()的默认行为,它返回一个表示该对象的字符串。这个行为可以通过在对象上定义自己的toString()方法来覆盖。valueOf(): 对于普通对象,valueOf()方法返回对象本身。所以,如果你对空对象调用valueOf(),你会得到这个空对象{}。
示例代码
let emptyArray = [];
let emptyObject = {};
console.log(emptyArray.toString()); // 输出: ""
console.log(emptyArray.valueOf()); // 输出: []
console.log(emptyObject.toString()); // 输出: "[object Object]"
console.log(emptyObject.valueOf()); // 输出: {}
需要注意的是,如果你覆盖了 toString 或 valueOf 方法,那么结果将会是你定义的方法的返回值。
浙公网安备 33010602011771号