js 深冻结 与 浅冻结 Object.freeze】的更多相关文章

1.深冻结 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>js 深冻结 与 浅冻结</title> </head> <body> <script type="text/javascript"> function deepFreeze(o) { var prop, propKey Ob…
我们都知道在js里对象是很容易改变的 var obj1 ={ a:'111' } obj1.a = '222'; console.log( obj.a ) //output 222 对象的属性发生了变化 现在我们来看看es5 给我提供一个对象的新方法冻结对象(浅冻结). Object.freeze(obj) obj是要冻结的对象,Object.freeze()可以防止对象新增属性或方法,防止删除和修改现有的属性和方法.他其实就是让对象变成不可变的数据; var obj = { a:'111' }…
前面提到 ES5 对象属性描述符,这篇看看对象的扩展.密封和冻结. 扩展对象 Object.preventExtensions Object.isExtensible 密封对象 Object.seal Object.isSealed 冻结对象 Object.freeze Object.isFrozen 1. Object.preventExtensions 阻止对象扩展,让一个对象变的不可扩展,也就是永远不能再添加新的属性 ES3 是没有办法阻止对象扩展的,定义对象后可以给对象添加任意属性,如…
Object.freeze() 方法可以冻结一个对象.一个被冻结的对象再也不能被修改: 冻结了一个对象则不能向这个对象添加新的属性,不能删除已有属性,不能修改该对象已有属性的可枚举性.可配置性.可写性,以及不能修改已有属性的值. 此外,冻结一个对象后该对象的原型也不能被修改.freeze() 返回和传入的参数相同的对象. const obj = { property: 42 }; const obj2 = Object.freeze(obj); obj.property = 33; // Thr…
将对象冻结,使用Object.freeze方法 const foo = Object.freeze({}); // 常规模式时,下面一行不起作用: // 严格模式时,该行会报错 foo.prop = 123; var t = { a:{ t:2 } } //冻结t对象下属性a Object.freeze(t) t.a.t = 3 //不能冻结属性a下的值obj中的对象 console.log(t.a.t) 除了将对象本身冻结,对象的属性也应该冻结.下面是一个将对象彻底冻结的函数. var con…
前言 所谓深复制与浅复制(深拷贝与浅拷贝),乍一听感觉听高大上,像是一个非常难理解的概念,其实我们平常项目开发都是在用的,只是你可能不知道该怎么叫它的名字而已,就像你听熟了一首歌,就是不知道这首歌叫什么名字一样. 在javascript中有两种数据类型,一种是基本类型,另一种是引用类型,今天说讨论的深复制与浅复制就是和这两种数据类型有直接的关系. 1.基本类型的复制 js种的基本类型有Number Boolean  String  undefined null这五类,在声明的时候,基本类型的数据…
前言:最近项目里面需要用到表格的冻结列功能,所谓“冻结列”,就是某些情况下表格的列比较多,需要固定前面的几列,后面的列滚动.遗憾的是,bootstrap table里自带的fixed column功能有一点bug,于是和同事讨论该如何解决,于是就有了这篇文章. 一.起因回顾 最近项目里面有一个表格需求,该表格列是动态产生的,而且列的数量操作一定值以后就会出现横向滚动条,滚动的时候需要前面几列固定.也就是所谓的excel的冻结列功能.该如何实现呢?不用多说,当然是查文档,于是找到了这篇http:/…
关键字:seal, freeze, property descriptor. 1.Object.seal() 参考文档(2)中这样描述: The Object.seal() method seals an object, preventing new properties from being added to it and marking all existing properties as non-configurable. Values of present properties can…
什么是深复制和浅复制? 深复制和浅复制的概念只存在于对象array和数组obj上. 浅复制是:模糊复制,就是不管对方是字符串类型还是引用类型都通通复制过来.结果两个变量的内容会同时变化. 深复制是:有目的的复制,就是只希望复制变量存储的内容. 深复制方法:let b = JSON.parse(JSON.strigify( a )): javascript值的类型有两种:字符串类型 和 引用类型 字符串类型的复制,值改变时不会影响到另一个变量,如: let a=7;  let b=a;  a=6;…
Object.freeze() 方法可以冻结一个对象.一个被冻结的对象再也不能被修改:冻结了一个对象则不能向这个对象添加新的属性,不能删除已有属性,不能修改该对象已有属性的可枚举性.可配置性.可写性,以及不能修改已有属性的值.此外,冻结一个对象后该对象的原型也不能被修改.freeze() 返回和传入的参数相同的对象. const obj = { prop: 42 }; Object.freeze(obj); obj.prop = 33; // Throws an error in strict…