You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
//举例子:
var p = function () {}
console.log(p.toString.call(Ctor)); // function Object() { [native code] }
console.log(Object.prototype.toString.call(p)); // [object Function]
将目光放在 es6 之前 js 类型有六种 Undefined null String Number Boolean Object
Object 类型中包含着 函数 、日期 、正则 、数组、(数组和类数组) 错误类型; 如果再将 Object 细分一下还会有 planinObject 空对象 Window对象等
除此之外还有 Math Json 类型
常用的类型判断方法会使用
typeof
使用 typeof 会返回 undefined、object、boolean、number、string、object 和 function
在面对其他类型时 如 数组或者正则 typeof 只能返回 object 这时候要采取其他的方法来判断
Object.prototype.toString
当 toString 方法被调用的时候,下面的步骤会被执行:使用 Object.prototype.toString 我们至少可以识别 14种类型
照抄一个判断类型
判断数据类型的type函数的扩展性不太好类似像
window
location
navigator
document
都会返回object数字(Number)中 再一次的划分整数、NaN、-0、0 、浮点数、Infinity、-Infinity
关于类型判断我们还可以使用这些方法:
plainObject
可以翻译成纯粹的对象,所谓"纯粹的对象",就是该对象是通过 "{}" 或 "new Object" 创建的,该对象含有零个或者多个键值对。除了 {} 和 new Object 创建的之外,jQuery 认为一个没有原型的对象也是一个纯粹的对象。
注意:我们判断 Ctor 构造函数是不是 Object 构造函数,用的是 hasOwn.toString.call(Ctor),这个方法可不是 Object.prototype.toString,不信我们在函数里加上下面这两句话:
发现返回的值并不一样,这是因为 hasOwn.toString 调用的其实是 Function.prototype.toString,毕竟 hasOwnProperty 可是一个函数!
空对象
Window对象
判断是否是数组(数组和类数组)
es6 以后 类型又增加了 Symbol Set Map 还有ES2020中 BigInt
参考
JavaScript 类型判断(上)
JavaScript 类型判断(下)
The text was updated successfully, but these errors were encountered: