一、typeof
console.log('typeof',
typeof 123,
typeof '123',
typeof true,
typeof {},
typeof null,
typeof undefined
);
//typeof
number string boolean object object undefined
null类型是object
二、instanceof
instanceof 运算符可以用来测试一个对象在其原型链中是否存在一个构造函数的 prototype 属性
console.log('typeof',
123 instanceof Number,
'123' instanceof String,
true instanceof Boolean,
{} instanceof Object,
[] instanceof Array,
[] instanceof Object,
);
//typeof false false false true true true
instanceof 用于判断引用类型
一、判断数组类型
- 通过ES6的Array.isArray()做判断 Array.isArrray(obj);
- 通过instanceof做判断 obj instanceof Array
- 通过原型链做判断 obj.proto === Array.prototype;
- 通过Array.prototype.isPrototypeOf (obj)
三、手写实现instanceof
function myInstanceof (left,right) {
let a = Object.getPrototypeOf(left)
const b = right.prototype
while (true) {
if (!a) {
return false
}
// 判断构造函数的 prototype 对象是否在对象的原型链上
if (a===b) {
return true
}
a = Object.getPrototypeOf(a)
}
}
本文探讨了JavaScript中的typeof操作符用法,以及instanceof用于判断对象类型的特性。特别关注如何手动实现数组类型判断,包括Array.isArray()、instanceof Array和原型链检查。
385

被折叠的 条评论
为什么被折叠?



