JavaScript 中如何检测一个变量是一个 String 类型?
答案:三种方法(typeof、constructor、Object.prototype.toString.call())
解析:
①typeof
typeof('123') === "string" // true
typeof '123' === "string" // true
②constructor
'123'.constructor === String // true
③Object.prototype.toString.call()
Object.prototype.toString.call('123') === '[object String]' // true
为什么typeof function时候返回的是Function
function本质上也是一个对象,但是function对象与普通对象相比,器内部有一个[[Call]]方法,用来表示这个对象是可调用的,typeof操作符在判断Object时候,如果内部实现了[[Call]]方法,就返回function。
其他解析:function实际上是object的一个子类型。具体来说,函数是可调用对象。