JS学习笔记(二)

本文探讨了JavaScript中值的不可变性,原始类型如字符串和数字是不可变的,而对象和数组则是可变的。闭包和对象可以封装状态,闭包能突破作用域和生命周期,而对象可以通过冻结保持整体不可变。文章还讨论了可见性、可更改性、状态拷贝以及性能影响。
摘要由CSDN通过智能技术生成

值的不可变

  • JS中值分为两种:原始类型和对象类型。
    • 原始类型:字符串和数字都是属于原始类型,本身是不可变的。
    • 对象类型: 数组和对象都是属于对象类型,这类数据更像是一种数据结构活着容器,这类的值是可变的。

结构型值的不可变(闭包和对象)

  • 闭包和对象:这二者都可以对一个状态值进行封装和创建行为。
  • 闭包:闭包的特点就是可以突破生命周期和作用域的限制,也就是时间和空间的控制。
    • 突破生命周期的限制:当一个外部函数内嵌一个内部函数时,如果内嵌函数引用了外部函数的变量 ,这个变量就会突破生命周期的限制,在函数执行结束后,仍热存在。
    • 突破作用域的限制:我们可以把一个内部函数返回成一个方法在外部调用。也可以通过对象来封装一个状态,并且创建一个方法来作用这个状态值。
  • 结构型不可变:
    • 概念:属性隐私:可见性,可更改。状态拷贝。性能(内存/计算)。
    • 闭包:
      • 可见性:默认隐藏,可通过接口读取。
      • 可更改:可通过接口细粒度控制更改。
      • 状态拷贝:相对难拷贝。
      • 性能:性能相对较低。
    • 对象:
      • 可见性:默认可见。
      • 可更改:可通过freeze保持整体不可变。
      • 状态拷贝:相对易拷贝。
      • 性能:性能相对较高。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值