Do any standard JavaScript APIs or libraries return strings as String objects?
直到最近,我才意识到在javascript中有两种类型的字符串(以及bools和number):原语(如EDOCX1)(0)和对象(如EDOCX1)(1)。
它们在非常容易"抓住"的方式上存在差异,其中最大的一个似乎是不同的
创建字符串对象是没有意义的,因为基本字符串也能正常工作,JShint甚至将其视为一个错误。所以我想假装字符串实例根本不存在,只支持我的代码中的原始字符串。
这让我想知道:我可以通过调用一些返回字符串的标准API来获得一个意外的字符串实例吗?或者,如果没有人明确地写下
这个Github搜索显示有些人正在使用
这个答案对字符串obj有一个很好的解释:
No native JavaScript object, major library or DOM method that returns
a string will return a String object rather than a string value.
However, if you want to be absolutely sure you have a string value
rather than a String object, you can convert it as follows:
1
2 var str = new String("foo");
str ="" + str;
号
我不知道任何只使用原始字符串的约定。还有越来越多的API可供使用,我非常肯定时不时会有人使用构造函数技巧。我想就如何快速发现这一点给出一些调试建议,但我认为
您可以使用这样的支票,尽管我认为不值得麻烦:
1 2 3 4 5 6 7 | function isString(string){ return typeof myVar == 'string' || myVar instanceof String; }; isString("foo"); //returns true isString(new String("bar")); //returns true isString({}); //returns false; |
结论:恐怕你只需要祈祷你不会遇到这些古怪的角落箱子。