美文网首页
JavaScript 创建值不可变对象

JavaScript 创建值不可变对象

作者: _____西班木有蛀牙 | 来源:发表于2020-03-08 13:47 被阅读0次
const obj1 = Object.freeze({
  a: 1,
})

obj1.a = 2 // 不能修改
Object.deepFreeze = function (obj){
  var propNames = Object.getOwnPropertyNames(obj);

  propNames.forEach(name => {
    var prop = obj[name];
    if (typeof prop == 'object' && prop !== null) {
      Object.deepFreeze(prop)
    }
  })

  return Object.freeze(obj)
}

const obj1 = Object.deepFreeze({
  a: {
    b: {
      c: 1,
      d: [1, 2, 3],
    },
  },
})

obj1.a.b.c = 2
obj1.a.b.d[1] = 5
console.log(obj1.a.b.c) // 1
console.log(obj1.a.b.d) // [1, 2, 3]

相关文章

  • JavaScript 创建值不可变对象

  • 对象的复制赋值

    目录 潜复制&深复制 值传递&引用传递 可变对象&不可变对象 赋值 对象的赋值实际上是对象的引用。当创建一个对象,...

  • 不变和可变对象

    不变对象是一旦创建,就只能表示相同的值,譬如String对象。 可变对象是能够改变对象的值,譬如StringBui...

  • OC中字典用法总结

    不可变字典对象(NSDictionary) 创建及初始化 访问键-值 文件的处理 其他 可变字典(NSMutabl...

  • mutableCopy、copy

    mutableCopy 创建一个新的可变对象,并初始化为原对象的值,新对象的引用计数为 1; copy 返回一个不...

  • copy和mutableCopy的区别

    mutableCopy 创建一个新的可变对象,并初始化为原对象的值,新对象的引用计数为 1; copy 返回一个不...

  • 可变对象使用copy修饰、不可变对象使用strong会发生什么

    使用copy修饰不可变对象的目的,是防止把可变类型的对象赋值给不可变类型的对象时,可变类型对象的值发生变化,引起不...

  • JavaScript Array 对象

    JavaScript Array 对象 Array 对象 Array 对象用于在单个的变量中存储多个值。 创建 A...

  • 字典

    字典 {key:value}键必须为不可变对象,值可用任何类型对象键不可重复,值可以重复。键如果重复创建时只会保留...

  • collections 模块的使用

    判断数据类型 1、Hashable 判断是否可哈希,即是否有哈希值,即是否为可变对象可变对象没有哈希值,不可变对象...

网友评论

      本文标题:JavaScript 创建值不可变对象

      本文链接:https://www.haomeiwen.com/subject/ojpddhtx.html