JS 中检测类型的方法

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 可以被改写, 所以使用要小心

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_48446542/article/details/108957240