📅  最后修改于: 2023-12-03 15:08:13.067000             🧑  作者: Mango
在 Javascript 中,我们经常需要把一个对象转换为字符串,通常可以使用 toString()
方法来完成这个操作。但是如果这个对象是 null
或者 undefined
,那么调用 toString()
方法就会抛出异常。这时候该怎么办呢?
const obj = null;
const str = obj && obj.toString();
console.log(str); // 输出 null
我们可以使用短路表达式来判断对象是否为 null
或者 undefined
,如果是,则不进行 toString()
方法的调用,避免抛出异常。
const obj = null;
const str = obj?.toString?.();
console.log(str); // 输出 null
在 ECMAScript 2020 中,新增了一个 ?.
运算符,也叫空合运算符(Nullish Coalescing Operator)。如果对象存在 toString()
方法,则调用它,否则返回 undefined
。
Object.prototype.toString = function() {
return this ? "[object " + this.constructor.name + "]" : "";
};
const obj = null;
const str = obj.toString();
console.log(str); // 输出 [object Null]
我们也可以重写 Object.prototype.toString()
方法,这样即使对象为 null
或者 undefined
,也可以调用该方法返回预期的字符串。
以上就是为可能为空的对象执行 toString()
方法的三种方案。根据实际情况选择最合适的方法,避免抛出异常和错误。