js怎样创立不成变的对象
发布时间:09/01 来源:未知 浏览:
关键词:
对象的不变性意味着我们不但愿对象在创立后以任何方式更换(将它们设定为只读类型)。
假设我们需要定义一个 car 对象,并在整个项目中使用它的属性来施行操纵。我们不克不及同意错误地修改任何数据。
const myTesla = { maxSpeed: 155, batteryLife: 300, weight: 2300 };
Object.preventExtensions() 防止扩展
此办法可防止向现有对象增加新属性,preventExtensions() 是不成逆的操纵,我们永久不克不及再向对象增加额外的属性。
Object.isExtensible(myTesla); // true Object.preventExtensions(myTesla); Object.isExtensible(myTesla); // false myTesla.color = 'blue'; console.log(myTesla.color) // undefined
Object.seal() 密封
它可以防止增加或删除属性,seal() 还可以防止修改属性描写符。
Object.isSealed(myTesla); // false Object.seal(myTesla); Object.isSealed(myTesla); // true myTesla.color = 'blue'; console.log(myTesla.color); // undefined delete myTesla.batteryLife; // false console.log(myTesla.batteryLife); // 300 Object.defineProperty(myTesla, 'batteryLife'); // TypeError: Cannot redefine property: batteryLife
Object.freeze() 冻结
它的作用与 Object.seal() 雷同,并且它使属性不成写。
Object.isFrozen(myTesla); // false Object.freeze(myTesla); Object.isFrozen(myTesla); // true myTesla.color = 'blue'; console.log(myTesla.color); // undefined delete myTesla.batteryLife; console.log(myTesla.batteryLife); // 300 Object.defineProperty(myTesla, 'batteryLife'); // TypeError: Cannot redefine property: batteryLife myTesla.batteryLife = 400; console.log(myTesla.batteryLife); // 300
留意:假如但愿在尝试修改不成变对象时抛出错误,请使用严厉模式。
引荐教程:js入门教程
以上就是js怎样创立不成变的对象的具体内容,更多请关注百分百源码网其它相关文章!