typeof 与 instanceof 的区别
Issue 欢迎在 Gtihub Issue 中回答此问题: Issue 461
Author 回答者: shfshanyue
typeof用以判断基础数据类型 (null 除外)instanceOf借助原型链判断复杂数据类型
如以下示例:
> typeof 3
< "number"
> [] instanceof Array
< truetypeof 能够准确检查除了 null 之外的基础数据类型(number, string, symbol, bigInt, undefined, boolean, null)
> typeof null
"object"instanceof 的语义是检查操作符右边的函数原型是否存在于左边对象的原型链中
知识来源: JavaScript 忍者秘籍
Author 回答者: shfshanyue
typeof能够准确检查除了 null 之外的基础数据类型(number, string, symbol, bingInt, undefined, boolean, null)> typeof null "object"
instanceof的语义是检查操作符右边的函数原型是否存在于左边对象的原型链中知识来源: JavaScript 忍者秘籍
@liweinandever 真是学习了,今天我才注意到 bigint 也是基本数据类型,见文档 Primitive,另外你这里的 bigint 有个 typoerror
Author 回答者: Vi-jay
我不管你问什么 我就做题
function myInstanceof(obj, clazz) {
let proto = Object.getPrototypeOf(obj);
while (proto && proto !== clazz.prototype) {
proto = Object.getPrototypeOf(proto);
}
return !!proto;
}Author 回答者: xiaochena
instanceof 的结果可以通过修改 [Symbol.toStringTag] 属性影响