本文对JS中创建的常量的定义和用法以及函数编写中的常见错误进行了深入分析,希望对大家有所帮助:
常量表示只能读取不能编辑(删除或修改)的变量。
Js没有原始的常量语句(即自定义的和原始的),但是可以用一些远程的方式创建。
1.1中的语句关键字:const es6。
上面声明了两个变量,执行修改操作时会报告一个错误。在某种程度上,const可以创建变量(基本类型)。但是,引用类型是有限的。
当声明的变量是引用类型时,它就是一个对象,可以对该对象进行操作(删除、修改和添加)。
2.对象方法(定义属性、密封、冻结)实现
1)object . defineperoperty:这个方法将直接在一个对象上定义一个新的属性,或者修改一个对象的现有属性并返回这个对象。
采用上述方法后,A的后续修改功能将失效。虽然修改功能不能正常执行,但删除功能仍然可以照常执行。
删除后增加A属性,A又变得可变。以上只是改变了A属性的可写属性,还有一个可以设置的可配置属性。可写属性只是将对应的属性直接更改为不可更改,但可以采取路径(先删除后添加)。
即使此属性a已结算,也不能修改或删除。
然而,新的风暴已经出现。虽然a已经确定,但是变量test _ d还没有结束。
属性A虽然不能更改,但不影响其他属性的操作,如b、s、u等。当然,其他属性的描述符也可以像上面一样用于这些属性,但是TEST_D的扩展无法解决。
2)对象。PreventExtensions :这个方法使一个对象不可扩展,也就是说,它永远不能添加新的属性。查看详细信息
通过这种方法,可以将对象设置为不可扩展的,即不能添加新的属性,这样就不能修改这个变量。
3)对象.密封:如果一个对象被密封并返回到密封的对象,新的对象将变得不可扩展,即不能添加新的属性,但可以修改原始的可写属性
通过回收以上两种方法可以创建常量,但是比较复杂,对象越大,代码量也会越大。Object.seal()可以简化这个过程。该方法可以使对象不可扩展,属性不可删除。在此基础上,通过将对象所有属性的描述符可写改为false,即所谓的常量,就可以得到我们想要的变量。
4) Object.freeze:此方法可以冻结一个对象,这意味着不能向该对象添加新属性,不能修改现有属性的值,不能删除现有属性,也不能修改该对象现有属性的可枚举性、可配置性和可写性。也就是说,这个对象总是不可变的。此方法返回冻结的对象。
Object.freeze方法在seal的基础上将所有属性的描述符可写改为false。
但是,当变量的属性值是对象时,会出现以下情况:
至于用户属性,其值还是可以更改的,所以此时需要冻结。
/* * * * * @ param { any } obj */function freeze obj(obj){ object . freeze(obj);对象。钥匙。foreach (key={if(类型为obj[key]==' object '){ freeze obj(obj[key])} })}),也就是有多个对象时,需要循环调用冻结方法。
3.关闭
const user=(()={ const user={ name : ' night,gender : ' m ' } return { get(name){ return user[name]} })()user。get ('name ')闭包使用了一个相对秘密的方法。真实对象原型保存在内存中,不会被回收。变量USER被伪装成“受保护的”,并且提供了访问接口,但是没有提供修改的接口。