stompJS详解(strncpy详解)

stompJS详解(strncpy详解)目录 JavaScript 进阶 第 4 天 深浅拷贝 浅拷贝 深拷贝 递归实现深拷贝 js 库 lodash 里面 cloneDeep 内部实现了深拷贝 JSON 序列化 异常处理 throw try catch debugger 处理 this 普通函数 箭头函数 改变 this 指向 call apply bind 防抖节流 浅拷贝 首先浅拷贝和深拷贝只针对引用类型 浅拷贝 拷贝的是地址

大家好,我是讯享网,很高兴认识大家。



目录

JavaScript 进阶 - 第4天

深浅拷贝

浅拷贝

深拷贝

递归实现深拷贝

js库lodash里面cloneDeep内部实现了深拷贝

JSON序列化

异常处理

throw

try ... catch

debugger

处理this

普通函数

箭头函数

改变this指向

call

apply

bind

防抖节流


浅拷贝

首先浅拷贝和深拷贝只针对引用类型

浅拷贝:拷贝的是地址

常见方法:

  1. 拷贝对象:Object.assgin() / 展开运算符 {…obj} 拷贝对象
  2. 拷贝数组:Array.prototype.concat() 或者 […arr]


    讯享网

如果是简单数据类型拷贝值,引用数据类型拷贝的是地址 (简单理解: 如果是单层对象,没问题,如果有多层就有问题)

深拷贝

首先浅拷贝和深拷贝只针对引用类型

深拷贝:拷贝的是对象,不是地址

常见方法:

  1. 通过递归实现深拷贝
  2. lodash/cloneDeep
  3. 通过JSON.stringify()实现
递归实现深拷贝

函数递归:

如果一个函数在内部可以调用其本身,那么这个函数就是递归函数

  • 简单理解:函数内部自己调用自己, 这个函数就是递归函数
  • 递归函数的作用和循环效果类似
  • 由于递归很容易发生“栈溢出”错误(stack overflow),所以必须要加退出条件 return
 

讯享网
js库lodash里面cloneDeep内部实现了深拷贝
讯享网
JSON序列化
 

了解 JavaScript 中程序异常处理的方法,提升代码运行的健壮性。

throw

异常处理是指预估代码执行过程中可能发生的错误,然后最大程度的避免错误的发生导致整个程序无法继续运行

总结:

  1. throw 抛出异常信息,程序也会终止执行
  2. throw 后面跟的是错误提示信息
  3. Error 对象配合 throw 使用,能够设置更详细的错误信息
讯享网

总结:

  1. 抛出异常信息,程序也会终止执行
  2. 后面跟的是错误提示信息
  3. 对象配合 使用,能够设置更详细的错误信息

try … catch

 

总结:

  1. 用于捕获错误信息
  2. 将预估可能发生错误的代码写在 代码段中

  3. 如果 代码段中出现错误后,会执行 代码段,并截获到错误信息

debugger

相当于断点调试

了解函数中 this 在不同场景下的默认值,知道动态指定函数 this 值的方法。

是 JavaScript 最具“魅惑”的知识点,不同的应用场合 的取值可能会有意想不到的结果,在此我们对以往学习过的关于【 默认的取值】情况进行归纳和总结。

普通函数

普通函数的调用方式决定了 的值,即【谁调用 的值指向谁】,如下代码所示:

讯享网

注: 普通函数没有明确调用者时 值为 ,严格模式下没有调用者时 的值为 。

箭头函数

箭头函数中的 与普通函数完全不同,也不受调用方式的影响,事实上箭头函数中并不存在 !箭头函数中访问的 不过是箭头函数所在作用域的 变量。

 

在开发中【使用箭头函数前需要考虑函数中 的值】,事件回调函数使用箭头函数时, 为全局的 ,因此DOM事件回调函数不推荐使用箭头函数,如下代码所示:

讯享网

同样由于箭头函数 的原因,基于原型的面向对象也不推荐采用箭头函数,如下代码所示:

 

改变this指向

以上归纳了普通函数和箭头函数中关于 默认值的情形,不仅如此 JavaScript 中还允许指定函数中 的指向,有 3 个方法可以动态指定普通函数中 的指向:

call

使用 方法调用函数,同时指定函数中 的值,使用方法如下代码所示:

讯享网

总结:

  1. 方法能够在调用函数的同时指定 的值
  2. 使用 方法调用函数时,第1个参数为 指定的值
  3. 方法的其余参数会依次自动传入函数做为函数的参数
apply

使用 方法调用函数,同时指定函数中 的值,使用方法如下代码所示:

 

总结:

  1. 方法能够在调用函数的同时指定 的值
  2. 使用 方法调用函数时,第1个参数为 指定的值
  3. 方法第2个参数为数组,数组的单元值依次自动传入函数做为函数的参数
bind

方法并不会调用函数,而是创建一个指定了 值的新函数,使用方法如下代码所示:

讯享网

注: 方法创建新的函数,与原函数的唯一的变化是改变了 的值。

  1. 防抖(debounce)所谓防抖,就是指触发事件后在 n 秒内函数只能执行一次,如果在 n 秒内又触发了事件,则会重新计算函数执行时间
 
  1. 节流(throttle)所谓节流,就是指连续触发事件但是在 n 秒中只执行一次函数
讯享网

小讯
上一篇 2025-05-31 10:49
下一篇 2025-05-23 16:14

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/195143.html