2、call()、app 《大厂前端面试题解析+Web核心总结学习笔记+企业项目实战源码+最新高清讲解视频》无偿开源 徽信搜索公众号【编程进阶路】 ly()、bind()
call apply和bind都可以用来修改this指向。只是使用方式不一样
函数名.call(所要指向的对象,参数1,参数2,…) ;调用fn函数。修改this指向
函数名.call(所要指向的对象,[参数1,参数2,…]) ;调用fn函数,修改this指向
bind()不会直接调用函数 返回一个新的函数 修改了this指向
3、变量在内存中的储存
基本数据类型:在内存中以值的形式存在–>字符串、数值、布尔类型、null、undefined
复合数据类型:在内存中以地址的形式存在–> 对象
4、浅拷贝:直接把对象的属性一一赋值,不考虑属性值类型
如果属性值为对象的时候,只要修改一个,其余对象对应数据都会改变
如何快速实现浅拷贝?–>遍历
5、深拷贝:如果对象的属性值为基本数据类型,直接拷贝;
如果对象属性对应的值对象,需要解析对象,再去拷贝。
快速实现深层拷贝:
6、高阶函数
7、闭包
扩大变量作用域
缩小变量作用域,防止变量污染
8、闭包应用
js有三部分组成:DOM+BOM+ECMAScript
es6 指的是ECMAScript扩展
https://es6.ruanyifeng.com/
9、let
let块级作用域:{就是代码块}
向上寻找距离该变量最近的开始的函数的作用范围,就是该{}之内。
let不能重复声明
let没有变量提升的概念
暂时性死区:在一个代码块内,如果有某个变量,会绑定该区域,不再受外界的影响
let声明变量之前,不能使用它