原型和原型链
原型和实例:每个构造函数(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 等关键字