js 判断对象是否是字符串

function isString(obj){ //判断对象是否是字符串
  return Object.prototype.toString.call(obj) === "[object String]";
}

验证:

var str1 = 'abc';

var str2 = new String('abc');


typeof str1; //"string"

typeof str2; //"object"


Object.prototype.toString.call(str1); //"[object String]"

Object.prototype.toString.call(str2); //"[object String]"

在 JavaScript 中,判断一个对象是否为字符串有多种方式,下面列举几种常用的方式: 1. 使用 typeof 运算符。如果 typeof 运算符返回值为 "string",则表示该对象字符串类型。例如: ```javascript typeof "hello" // "string" typeof 42 // "number" typeof true // "boolean" typeof undefined // "undefined" typeof null // "object" (注意这里返回的是 "object",这是 typeof 的一个历史遗留问题) typeof {} // "object" typeof [] // "object" typeof function(){} // "function" ``` 2. 使用 instanceof 运算符。如果对象是 String 类型的实例,那么返回值为 true。例如: ```javascript var str = "hello"; str instanceof String // false var strObj = new String("hello"); strObj instanceof String // true ``` 需要注意的是,使用 typeof 判断字符串字面量和字符串对象的类型是不同的,如下所示: ```javascript typeof "hello" // "string" typeof new String("hello") // "object" ``` 因此,如果需要判断字符串字面量或字符串对象是否为字符串类型,可以使用以下方式: ```javascript var str = "hello"; typeof str === "string" // true str instanceof String // false var strObj = new String("hello"); typeof strObj === "string" // false strObj instanceof String // true ``` 3. 使用 Object.prototype.toString 方法。如果对象的类型是字符串,toString 方法会返回 "[object String]"。例如: ```javascript Object.prototype.toString.call("hello") // "[object String]" Object.prototype.toString.call(42) // "[object Number]" Object.prototype.toString.call(true) // "[object Boolean]" Object.prototype.toString.call(undefined) // "[object Undefined]" Object.prototype.toString.call(null) // "[object Null]" Object.prototype.toString.call({}) // "[object Object]" Object.prototype.toString.call([]) // "[object Array]" Object.prototype.toString.call(function(){}) // "[object Function]" ``` 需要注意的是,以上这些方式都有其局限性,不能完全准确地判断一个对象是否为字符串类型。在实际开发中,需要根据具体情况选择合适的方式来判断对象的类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值