let person = { firstName: "Zhentian", lastName: "Wan" }; /*Object.freeze() makes object cannot be updated, added or deleted*/ let freezePerson = Object.freeze(person); freezePerson.address="Finland"; // Cannot add property ad…
目录 一 Object.defineProperty 1.1 用法 1.2 数据描述 1.2.1 value 1.2.2 writable 1.2.3 enumerable 1.2.4 configurable 1.2.5 注意默认值 1.2.6 设置的特性总结: 1.3 存取器描述 1.3.1 getter/setter 1.3.2 configurable和enumerable同上面的用法. 1.4 兼容性 二 Object.freeze 2.1 Object.freeze做了三件事情 2.…
Object.freeze()冻结一个对象.不能添加新的属性,不能删除已有属性,不能修改该对象已有属性的可枚举性.可配置性.可写性,以及不能修改已有属性的值.冻结一个对象后该对象的原型也不能被修改. Object.seal()封闭一个对象.不能添加新属性,不能删除已有属性,不能修改该对象已有属性的可枚举性.可配置性.可写性,已有属性的值以然可以修改.(也就是说descriptor里的writable变成没有变,configurable变成false了)       附:…
前面提到 ES5 对象属性描述符,这篇看看对象的扩展.密封和冻结. 扩展对象 Object.preventExtensions Object.isExtensible 密封对象 Object.seal Object.isSealed 冻结对象 Object.freeze Object.isFrozen 1. Object.preventExtensions 阻止对象扩展,让一个对象变的不可扩展,也就是永远不能再添加新的属性 ES3 是没有办法阻止对象扩展的,定义对象后可以给对象添加任意属性,如…
将对象冻结,使用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…
关键字: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…
1  Object.seal(O)的调用 When the seal function is called, the following steps are taken:   If Type(O) is not Object throw a TypeError exception.   For each named own property name P of O,      Let desc be the result of calling the [[GetOwnProperty]] int…
const定义的常量,一般是不能修改的. 比如: const TIME_OUT = 10000; 但是当值为引用类型值时,还是可以操作对象,扩展或修改对象属性.方法等等. 以下演示代码的操作是不会报错,且行之有效的.. const person = { name: 'xm' } person.age = 18; person.name = 'xh'; ES6(?)在Object上添加了一个静态方法freeze() ,可以禁止修改.扩展引用类型值. 用法就是把person作为参数传入该方法中.如:…
我们都知道在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' }…
http://www.blogjava.net/zkjbeyond/archive/2006/04/16/41336.html javascript中对象只包括属性和方法两种成员.ECMA-262 把对象(object)定义为“属性的无序集合,每个属性存放一个原始值.对象或函数”.严格来说,这意味着对象是无特定顺序的值的数组.对象的创建和销毁都在 JavaScript 执行过程中发生. 一.Object对象 Object对象是javascript中所有对象的父对象,它的所有方法和属性在所有其他对…