面试总结

120 阅读1分钟

原型和原型链

原型和实例:每个构造函数(constructor)都有一个原型对象(prototype),原型对象都包含一个指向构造函数的指针,而实例(instance)都包含一个指向原型对象的内部指针.

如果试图引用对象(实例instance)的某个属性,会首先在对象内部寻找该属性,直至找不到,然后才在该对象的原型(instance.prototype)里去找这个属性,prototype在整个过程中充当链条的左右,所以称为原型链 通过instanceof可以判断是否是原型链上的属性

js的堆栈和数据结构的堆栈

JS堆栈

堆:动态分配内存,存储的是引用类型的值

栈:自动分配内容,存储的是基本类型的值和引用类型的地址

数据结构的堆栈

栈:是一种特殊的线性代表,遵循FILO(first in last out)先入后出的原则

堆:堆是一种比较特殊的数据结构,可以看为是一个二叉树

JS的的循环机制的区别

宏任务:setTimeout, setInterval, setImmediate, I/O, UI rendering

微任务:process.nextTick, Promise, MutationObserver

JS每次执行任务,微任务会一直从任务栈中提取待执行的函数,而宏任务则执行完本次后才会再次提取

严格模式和正常有什么区别

use strict 是一种 ECMAscript5 添加的(严格)运行模式,这种模式使得 Javascript 在更严格的条件下运行。严格模式的实现使您的程序或函数遵循严格的操作环境。

  • 不允许创建全局变量
  • 不允许使用delete
  • 不允许用let yeild 等关键字