JS 中检测类型的方法

    科技2025-02-02  24

    typeof instanceof Object.prototype.toString constructor duck type

    typeof

    返回一个字符串, 非常适合函数对象和基本类型的判断 注意以上都是返回字符串, 但是数组也是对象, 依然返回Object 因此在判断对象是否是数组 或者等其他类型细分的话, 就有局限

    所以判断对象常用instanceof

    instanceof

    它的返回值 true or false

    instanceof: 它是基于原型链去判断 obj instanceof Object instanceof 大致的原理是它判断 obj这个对象的原型链上 是否有右边的这个构造函数的 prototype属性

    instanceof 期望左边是一个对象, 如果不是对象,比如基本类型就返回 false instanceof 期望右边是一个函数对象或者说函数构造器,如果不是就会抛出错误异常

    任何一个构造函数都有一个 prototype对象属性, 该对象属性用 new 构造函数这样一种方式, 构造出对象原型, 比如 Person 就有 prototype 属性, 用 new Person()创建一些peroson 的实例的时候, 这个实例或者说对象实例就会有一个原型指向 Person.prototype这个对象.

    这里创建一个 Boso = new Student(), 创建了一个 student 实例是 Bosen, 所以 bosn instranceof Student 返回 true, 因为 bosen 肯定是 student 类型

    任何一对象都有 constructor 属性, 继承自原型. 这个 constructor 会指向构造这个对象的构造器或者说构造函数. 因为 constructor 可以被改写, 所以使用要小心

    Processed: 0.011, SQL: 8