面试题记录

面试题1
js中基础类型和引用类型有哪些,怎么判断(typeof, instaceof, Object.prototype.toString.call()),这几个方法的各自优缺点,instaceof 大概原理(代码写出来)

1:有哪些

  • 基础类型string, boolean, number, null, undefined, symbol,bigInt
  • 引用类型Object 细分(Array, Date, RegExp, Set, Map等)

2:怎么去判断各自优缺点

  • typeof 只能判断基础类型还要去掉null
  • instanceof 能检测array,Date等类型但不能检测基础类型,而且[] intanceof Object也是对的范围广了,并且因为是原型查找容易被改
// 纂改例子
const time = new Date();
console.log(time instanceof Array); // false;

const time = new Date();

time.__proto__ = [];
console.log(time instanceof Array); // true

  • object.prototype.toString.call 能准确判断 但是写法长了点

3:instaceof原理

// 在写原理之前我们理一下思路
[] instanceof Array // 意思就是A的__proto__能不能找到Array.prototype
const instanceof = (newObject, origin) => {
let newObjectProto = newObject.__proto__;
let originPrototype = origin.prototype;

// 一个循环如果不等一直查找,直到找到object原型的__proto__也就是null
while(true) {
   if(newObjectProto === null) {
   return false;
}
if(newObjectProto === originPrototype) {
 return true;
}

newObjectProto = newObjectProto.__proto__
}
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 禁止鼠标右键contextmenu 是当浏览者按下鼠标右键出现菜单时或者通过键盘的按键触发页面菜单时触发的事件...
    Shaw007阅读 408评论 0 0
  • 1.通过typeof可以判断处几种基本数据类型Boolean,number,string,null,undefin...
    舟渔行舟阅读 654评论 0 1
  • JavaScript 的数据类型检测是我们平时开发中经常会遇到的场景,小到基本数据类型大至各种引用数据类型的检测,...
    java菜阅读 277评论 0 0
  • 1.数组扁平化:答案 理解:数组扁平化可以利用apply(默认将数组展开)和扩展运算符(...) 如:[].con...
    GGatsby阅读 105评论 0 0
  • 罗7:14 我们原晓得律法是属乎灵的、但我是属乎肉体的、是已经卖给罪了。 分析: 保罗在七7-13经文采用过去的时...
    军约瑟阅读 1,273评论 0 0