是否有任何标准JavaScript API或库将字符串作为String对象返回?

时间:2014-07-10 13:50:35

标签: javascript string

直到最近,我还没有意识到JavaScript中有两种类型的字符串(和bool和数字):"blah"等基元和new String("blah")等对象。< / p>

他们的方式各不相同,其中最大的方式似乎是typeof"string""object"不同,但是存在许多其他差异,一些documented at MDN

创建String对象没有意义,因为原始字符串也可以正常工作,JSHint even treats this as an error。所以我真的很想假装String实例甚至不存在,只支持我代码中的原始字符串。

这让我想知道:我可以通过调用一些返回字符串的标准API来获得一个惊喜的String实例吗?或者是否真的可以安全地假设除非有人通过明确写new String来搞砸,否则我永远不会看到其中的一个?

2 个答案:

答案 0 :(得分:2)

This github search表示有些人正在使用new String

this answer对String obj有一个很好的解释:

  

没有返回的本机JavaScript对象,主要库或DOM方法   字符串将返回String对象而不是字符串值。   但是,如果您想绝对确定您有字符串值   而不是String对象,您可以按如下方式转换它:

var str = new String("foo");
str = "" + str;

答案 1 :(得分:1)

我不知道任何只使用原始字符串的约定。还有越来越多的API可供使用,而且我非常肯定每个人都会不时地使用构造函数技巧。我想提供一些关于如何发现这个快速的调试建议,但我认为typeof检查是快速记录差异的唯一明显方法。

你可以使用像this answer这样的支票,虽然我觉得这不值得麻烦:

function isString(string){
     return typeof myVar == 'string' || myVar instanceof String;
};

isString("foo");             //returns true
isString(new String("bar")); //returns true
isString({});                //returns false;

结论:我担心你必须祈祷你不会遇到 这些古怪的角落案件。