- undefined
- boolean
- string
- number
- object
- function
[].constructor===Array
/123/.constructor===RegExp
(10).constructor === Number
function Person(name) {
this.name = name
}
var person = new Person();
person.constructor=== Person
[] instanceof Array => true
[] instanceof Object => true
[] instanceof Date => false
因为 toString 返回的总是[object,class] 形式,object 通用类型,class 表示内部类型,所以可以使用Object.prototype.toString的方法
因为 Array,Boolean,Number等都是Object的实例,如:Array instanceof Object 结果为true ,可以验证Array,Boolean等都复写了toString的原型方法,在调用[].toString() 实际调用的是 Array.prototype.toString()并不是Object.prototype.toString()
delete Array.prototype.toString
console.log([].toString());
function typeOf(obj) {
var typeList = {
'[object Boolean]' : 'boolean',
'[object Number]' : 'number',
'[object String]' : 'string',
'[object Function]' : 'function',
'[object Array]' : 'array',
'[object Date]' : 'date',
'[object RegExp]' : 'regExp',
'[object Undefined]': 'undefined',
'[object Null]' : 'null',
'[object Object]' : 'object'
};
return typeList [Object.prototype.toString.call(obj)];
}
更多技术资讯可关注:itheimaGZ获取