如何用最简洁的方式检验一个对象是否为字符串?
怎样检验字符串最简洁?
假设写一个函数 isString
,应满足:
- isString(’’) == true
- isString(new String()) == true
- isString(new (class extends String {}) == true
- isString(undefined) == false
- isString(null) == false
8 回复
function isString(str) {
return str instanceof String || str != null && str != undefined && str.constructor == String
}
这样可以吗,老哥们
typeof str === ‘string’ 就可以了,string 是原始类型,你用 instanceOf String 没用的
@rrbe 试试 typeof new String('str')
用 Object.prototype.toString.call(str) == ‘[object String]’
这个办法不仅可以用于 string,对于其他的任意类型都可以准确判断。
@myy 这个不戳~
我挺好奇 new String(‘str’) 和 ‘str’ 是同一个东西吗。。。
underscore里有的,node库里也有的。
@zhangxh1023 不是
typeof('str') // string
typeof(new String('str')) // object