Js基础知识加强排
手写代码
实现函数能够深度克隆基本类型
JS 中的浅拷贝与深拷贝,只是针对复杂数据类型(Object,Array)的复制问题。浅拷贝与深拷贝都可以实现在已有对象上再生出一份的作用。但是对象的实例是存储在堆内存中然后通过一个引用值去操作对象,由此拷贝的时候就存在两种情况了:拷贝引用和拷贝实例,这也是浅拷贝和深拷贝的区别。注:有的数组自带方法是局限性的,例如slice()、concat(),仅适用于对不包含引用对象的一维数组的深拷贝。
数组的深拷贝
slice()(有上述局限)concat()(有上述局限)扩展运算符(有上述局限)
对象的深拷贝
- 利用
JSON对象中的parse和stringify - 扩展运算符(有上述局限)
- 利用
递归来实现每一层都重新创建对象并赋值
1 | |
函数中的arguments是数组吗?类数组转数组的方法了解一下?
函数中的arguments是类数组:
1 | |
结果:
1 | |
类数组转数组的方法:
- 扩展运算符
Array.fromArray.prototype.slice.apply(arguments)
原型、原型链、继承
ES5中this、apply、call、bind问题
详见Js中关于this、apply、call、bind的深入探讨
运行机制
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!