JavaScript的类型检查与验证

2018-03-17  本文已影响0人  科研者

目录

内容

一、 typeof

语法:
typeof运算符后跟操作数:

typeof operand

或者

typeof (operand)

参数:

说明:
typeof 操作符返回一个字符串,表示操作数的基本类型。
下表总结了typeof可能的返回值:

类型 结果
Undefined "undefined"
Null "object"
Boolean "boolean"
Number "number"
String "string"
Symbol "symbol"
宿主对象(由JS环境提供) Implementation-dependent
函数对象 "function"
任何其他对象 "object"

二、 instanceof

语法:

object instanceof constructor

参数:

说明:
instanceof 运算符用来检测 constructor.prototype 是否存在于参数 object 的原型链上。

机制:
instanceof 的等效函数如下:

function instanceof(object,constructor){
    
    let nextProto = object.__proto__;
    
    while (constructor !== null) {
        if (nextProto === constructor.prototype) {
            return true;
        }
        nextProto = nextProto.__proto__;
    }
    return false;
}

或者

function instanceof(object,constructor){
    
    let nextProto = Object.getPrototypeOf(object);
    
    while (constructor !== null) {
        if (nextProto === constructor.prototype) {
            return true;
        }
        nextProto = Object.getPrototypeOf(nextProto);
    }
    return false;
}

三、 typeof 与 instanceof 区别

四、 获取对象类型的具体类型信息

typeof 操作符只能返回操作数的基本类型,对于任何自定义的对象类型, typeof 操作符只会返回 "object" ,而 instanceof 是用来验证对象类型的,不是用来获取对象类型的;若想获取对象的具体类型信息,可通过访问对象的 constructor 属性,该属性会返回该对象的构造函数;若只想获取对象的具体类型的名字,则可通过访问对象的构造函数 constructor 的 name 属性;如下:

获取对象的类型:

object.constructor

获取对象的类型的名字:

object.constructor.name
上一篇 下一篇

猜你喜欢

热点阅读