一些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 事件

原文地址:https://www.cnblogs.com/zhouhongdan/p/12613335.html