我无法弄清楚toString
方法在字符串上使用时可能有什么用处。字符串已经是一个字符串,就其本质而言,它返回字符串的值。
此...
console.log("Hello"); // => "Hello"
console.log(typeof "Hello"); // => string
似乎与此完全一样......
console.log("Hello".toString()); // => "Hello"
console.log(typeof "Hello".toString()); // => string
如果toString
将某些内容转换为字符串并将其值作为字符串返回,并且字符串是字符串并返回字符串的值,则我只能断定此方法完全没有意义。我错过了什么吗?
注意:“JavaScript中字符串文字和String对象之间的区别是什么?”和“在字符串上使用toString方法是否有任何使用价值?”显然不是同一个问题所以我不认为这应该被视为重复。
答案 0 :(得分:4)
可能存在误解。
字符串是原始值,也就是说,它们不是对象。因此他们没有方法。
但是,某些原始值可以包含在类似对象中。它是布尔,数字和字符串的情况。
当您尝试将这些原始值之一用作对象时,例如在调用方法时,会发生以下情况:
因此,是的,在字符串原语上使用toString
方法通常是无用的,因为它只将它转换为引擎盖下的对象字符串,并且该方法将字符串对象转换回字符串原语。
但是,当你有一个字符串对象时,情况就不是这样,因为你可能想把它转换成一个字符串原语:
var obj = new String('hello');
typeof obj; // 'object'
var str = obj.toString();
typeof str; // 'string'
在字符串原语上使用toString
的情况是用自定义函数替换它时(不推荐):
String.prototype.toString = function() { return '[' + this + ']' };
'hello'.toString(); // "[hello]"
答案 1 :(得分:0)
String对象和String literal是两回事。在这里阅读更多相关信息: What is the difference between string literals and String objects in JavaScript?