Open fwon opened 7 years ago
JavaScript有7种内置类型:
typeof typeof 运算符用来查看 值 的 内置类型,它返回的是类型的字符串值,但是这七中类型和它们的字符串值并不一一对应。
其中 typeof null == "object" 而不是 "null", 这可以简单理解为JavaScript的一个陈年bug。另外还有一个"function"类型,但是实际上function不是一种内置类型,它只是object的一个子类型。可能为了方便而引入的一个feature。实际使用中typeof的功能还是很鸡肋的。
typeof null == "object"
"null"
"function"
instanceof instanceof 用来判断 变量 的 引用类型,引用类型通常是通过new一个构造函数生成的,如new String(),new Array()...
new
new String()
new Array()
如果你用typeof判断由上面引用类型new出来的变量,将统一得到"object"。因为这些引用类型的基本类型都是继承自Object。
var arr = new Array(); arr instanceof Array; //true arr instanceof Object; //true typeof arr; //"object" "abc" instanceof String; //false
所以instanceof是用来判断某个变量是否为构造函数的实例。通常我们需要自己封装一个方法来判断我们最终的值是什么类型的,并在业务中做进一步操作。下面是一种封装的方法。
Object.prototype.toString Object 引用对象内置了toString方法,不管对于基本类型值还是构造函数生成的引用类型值,都能正确地返回其类型,我们可以这么来封装一个对象判断方法。
function isType(type) { return function(obj) { return Object.prototype.toString.call(obj) == "[object " + type + "]" } } var isObject = isType("Object") var isString = isType("String") var isArray = Array.isArray || isType("Array") var isFunction = isType("Function") var isUndefined = isType("Undefined")
JavaScript有7种内置类型:
typeof typeof 运算符用来查看 值 的 内置类型,它返回的是类型的字符串值,但是这七中类型和它们的字符串值并不一一对应。
其中
typeof null == "object"
而不是"null"
, 这可以简单理解为JavaScript的一个陈年bug。另外还有一个"function"
类型,但是实际上function不是一种内置类型,它只是object的一个子类型。可能为了方便而引入的一个feature。实际使用中typeof的功能还是很鸡肋的。instanceof instanceof 用来判断 变量 的 引用类型,引用类型通常是通过
new
一个构造函数生成的,如new String()
,new Array()
...如果你用typeof判断由上面引用类型new出来的变量,将统一得到"object"。因为这些引用类型的基本类型都是继承自Object。
所以instanceof是用来判断某个变量是否为构造函数的实例。通常我们需要自己封装一个方法来判断我们最终的值是什么类型的,并在业务中做进一步操作。下面是一种封装的方法。
Object.prototype.toString Object 引用对象内置了toString方法,不管对于基本类型值还是构造函数生成的引用类型值,都能正确地返回其类型,我们可以这么来封装一个对象判断方法。