一些js 概念 整理
1.原型链 prototype
这个属性 是一个指针,指向一个对象
这个对象 包含 所有实例共享的属性和方法,即这个原型对象是用来给实例共享属性和方法的。
而每个实例内部都有一个指向原型对象的指针。
2.原型链
主要实现原理
PersonB.prototype = Object.create(PersonA.prototype)实现来继承PersonA的原型
PersonB.prototype = Object.create(PersonA.prototype)
通过new关键字实例化的对象身上就有了PersonB自身的属性和方法,也有了PersonA的原型方法
当实例化对象调用某个方法时会先在自身和原型上查找,然后是在_proto_上一层层查找,这种方式就是原型链
3.闭包
函数嵌套函数,内部函数引用来外部函数的变量,从而导致来垃圾回收机制没有生效,
变量被保存来下来。
也就是所谓的内存泄漏,然后由于内存泄漏又会导致你项目逐渐变得卡顿等等问题。因此要避免内存泄漏
4.深拷贝
通过利用JS
JSON.parse(JSON.stringify(Object)
ON.parse(JSON.stringify(Object))来达到深拷贝的目的
但是JSON深拷贝的缺点是undefined和function还有symbol类型是无法进行深拷贝的
5.浅拷贝
1.ES6新特性Object.assign()
2.与扩展运算符来达到浅拷贝的目的 {...obj}
6.DOMContentLoaded 与load
DOMContentLoaded 事件表示 DOM 树构建完毕,可以安全地访问 DOM 树所有 Node 节点、绑定事件等等
load 事件表示所有资源都加载完毕,图片、背景、内容都已经完成渲染,页面处于可交互状态。
在 jQuery 中经常使用的 $(document).ready(function() { // ...代码... });
其实监听的就是 DOMContentLoaded 事件,而 $(document).load(function() { // ...代码... }); 监听的是 load 事件