js创建不可变的对象
2021-02-11 16:20
标签:style tar obj false extension code battery lan 注意 对象的不变性象征着我们不想要对象在新建后以任意形式改变(将这些设置为只读类型)。 假如我们必须定义一个car对象,并在整体项目中应用它的属性来完成操作。我们不能允许不正确地改变任意数值。 Object.preventExtensions()阻止扩展 此方法可阻止向当前对象增加新属性,preventExtensions()是不可逆的操作,我们始终不可以再向对象增加附加的属性。 Object.seal()密封 它可以阻止增加或删除属性,seal()还能够阻止改变属性描述符。 Object.freeze()冻结 它的作用与Object.seal()一样,同时它使属性不可写。 注意:假如想要在测试改变不可变对象时抛出不正确,请应用严格模式。 延伸阅读:为企业带来客户的网站营销策略 js创建不可变的对象 标签:style tar obj false extension code battery lan 注意 原文地址:https://www.cnblogs.com/x1aoguaishou/p/13038646.html1 const myTesla = {
2
3 maxSpeed: 155,
4
5 batteryLife: 300,
6
7 weight: 2300
8
9 };
1 Object.isExtensible(myTesla); // true
2
3 Object.preventExtensions(myTesla);
4
5 Object.isExtensible(myTesla); // false
6
7 myTesla.color = ‘blue‘;
8
9 console.log(myTesla.color) // undefined
1 Object.isSealed(myTesla); // false
2
3 Object.seal(myTesla);
4
5 Object.isSealed(myTesla); // true
6
7
8
9 myTesla.color = ‘blue‘;
10
11 console.log(myTesla.color); // undefined
12
13
14
15 delete myTesla.batteryLife; // false
16
17 console.log(myTesla.batteryLife); // 300
18
19
20
21 Object.defineProperty(myTesla, ‘batteryLife‘); // TypeError: Cannot redefine property: batteryLife
1 Object.isFrozen(myTesla); // false
2 Object.freeze(myTesla);
3 Object.isFrozen(myTesla); // true
4
5 myTesla.color = ‘blue‘;
6 console.log(myTesla.color); // undefined
7
8 delete myTesla.batteryLife;
9 console.log(myTesla.batteryLife); // 300
10
11 Object.defineProperty(myTesla, ‘batteryLife‘); // TypeError: Cannot redefine property: batteryLife
12
13 myTesla.batteryLife = 400;
14 console.log(myTesla.batteryLife); // 300