this/call/apply/bind
1. 对this对象的理解
- 函数调用模式 : 当一个函数不是对象的属性时,直接调用这个函数,this就会指向全局对象
- 方法调用模式 : 当一个函数被当成对象的属性调用时,this指向这个对象
call() 和 apply() 的区别?
call()和apply()的作用是一致的,他们区别在于参数上
- apply的第一个参数是this绑定对象,第二个参数是类数组或数组
- call的第一个参数也是this绑定对象,第二个参数开始是逐个参数序列
实现call、apply 及 bind 函数
call()
Fucntion.prototype.myCall = function( context ){
if(typeof this !== 'fucntion' ){
throw new TypeErr
}
let arg = [...arguments],rest=null;
context = context || window
context.fn = this
rest = context.fn(...arg)
delete context.fn
return rest
}
浏览器的垃圾回收机制
JavaScript拥有垃圾回收机制,JavaScript会分配内存空间存储变量,当一个变量不再使用时就会释放这个空间
回收机制
-
当一个变量不再使用时,JavaScript会释放对应内存空间
-
全局变量和局部变量,全局变量是生命周期是浏览器卸载时。而局部变量是在一个函数内的变量,当函数执行完毕时,这个变量也不再需要,JavaScript就会释放它的内存空间 垃圾回收的方式
-
标记清除
-
引用计数
async/await
async返回的是一个promise对象,当遇到await会返回,直到触发的异步操作结束时,就会执行构造体后的语句,理解为让出线程,脱离async函数
对Promise的理解
Promise是一个异步编程的方案,t,它大大改善了异步编程的困境,避免了回调地狱
并发与并行的区别?
并发,宏观概念,我有任务A,B,在一段时间任务间的切换完成A,B两个任务。这就是并发
并行,微观概念,我又任务A,B,假设CPU有两个核心。同时完成任务A,B,同时完成多个任务,这就是并行