🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[toc] ### 1.typeof `typeof`操作符返回一个字符串,表示未经计算的操作数的类型 使用方法: ```js typeof operand typeof(operand) ``` ```js typeof 1 // 'number' typeof '1' // 'string' typeof undefined // 'undefined' typeof true // 'boolean' typeof Symbol() // 'symbol' typeof null // 'object' typeof [] // 'object' typeof {} // 'object' typeof console // 'object' typeof console.log // 'function' ``` ### 2.instanceof `instanceof`运算符用于检测构造函数的`prototype`属性是否出现在某个实例对象的原型链上 ```js // 定义构建函数 let Car = function() {} let benz = new Car() benz instanceof Car // true let car = new String('xxx') car instanceof String // true let str = 'xxx' str instanceof String // false ``` ### 3.手写instanceof 采用,Object.getPrototypeof一步步往上层寻找实例的原型,用while循环,当原型===构造函数的prototype时return true,当proto不存在时,returu false ```js /** * @param {*} left obj 实例 * @param {*} right func 构造函数 */ function myInstanceOf(left, right) { // 非对象或null return false if(typeof left !== 'object' || left === null) { return false } // 获取当前实例的原型 let proto = Object.getPrototypeOf(left) while(true) { if (proto === right.prototype) { return true } if (!proto) { return false } proto = Object.getPrototypeOf(proto) // 否则继续往上层找原型 } } ```