随笔-js

深拷贝、浅拷贝相关

浅拷贝是指copy的对象和被copy的对象它们公用一个实体,也就是同时指向内存中的一个相同的地址

深拷贝是指copy的对象和被copy的对象两个都是独立的、互不影响的。

值类型的copy都属于深拷贝,而引用类型copy都属于浅拷贝(string类型除外)

JSON.stringify与JSON.parse可以实现深拷贝

 apply和call的异同点?

相同点: 都是可以改变this指向

不同点:  apply通过数组形式传参

               call直接传参,用逗号隔开

你所知道的所有性能优化

1.减少请求    2.代码优化        3.打包压缩文件      4.字体图标,精灵图。  5.图片懒加载.  6.减少cookie使用        7.尽量少操作dom以避免重绘和回流,文档碎片       8.减少闭包使用,防止内存泄露.     9.用户行为预测    10.使用离线缓存    11.分页加载数据  12.防抖节流    13.模块按需加载    14.路由懒加载

你所理解的闭包

闭包就是能够读取其他函数内部变量的函数。

在本质上,闭包是将函数内部和函数外部连接起来的桥梁。

封闭性: 外界无法访问闭包内部的数据

持久性:外部函数被调用之后,闭包结构依然保存在

缺点:闭包携带包含它函数的作用域,因此比其他函数占用的内存更多,泄露内存。解决方法是,在退出函数之前,将不使用的局部变量全部删除。

优点:减少创建全局变量 减少传递给函数的参数量

 ES6新特性

1. const 与 let 变量

使用let声明的变量可以重新赋值,但是不能在同一作用域内重新声明

使用const声明的变量必须赋值初始化,但是不能在同一作用域类重新声明也无法重新赋值.

2.模板字面量

3.解构

在ES6中,可以使用解构从数组和对象提取值并赋值给独特的变量

4.for...of循环

for...of 循环用于循环访问任何可迭代的数据类型。

5.展开运算符

展开运算符用三个连续的点 (...) 表示使你能够将字面量对象展开为多个元素

6.ES6箭头函数

箭头函数没有自己的this而是引用外层的this。

7.函数默认参数

es6为参数提供了默认值。在定义函数时便初始化了这个参数

8.class、 extends、 super

9.Promise

代码优美,避免了地狱回调

它有三个状态:

            pending就是未决,

            resolve可以理解为成功,

            reject可以理解为拒绝。

10.set map  Set和Map分别用来声明一个数组和对象。

11.模块化开发

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值