自发布以来,ES6 为 JavaScript 带来了一些新特性和方法。这些新函数包括Object freeze()方法和常量。有时人们会感到困惑Object freeze()方法和常量 但是对象.freeze()和常量是完全不同的。在本文中,我们将解释这两者之间的差异。
JavaScript 常量: 常量关键字创建一个只读参考到一个值。由创建的变量常量关键字是不可变的。换句话说,您不能将它们重新分配给不同的值。尝试重新分配常量变量将导致TypeError.
用法:
const const_name; const x;
示例 1:
Javascript
let myName = "Geeksforgeeks"
console.log(myName)
// Uncaught TypeError
myName = "gfg"
输出:
Geeksforgeeks
const 关键字确保创建的变量是只读的。但这并不意味着 const 变量引用的实际值是不可变的。即使 person 变量是恒定的。但是,您可以更改其属性的值。但是您不能为 person 常量重新分配不同的值。
示例 2:
Javascript
const person = {
name: "Geeksforgeeks"
};
// No TypeError
person.name = "gfg";
console.log(person.name);
输出:
gfg
Object.freeze()如果您希望 person 对象的值不可变,则必须使用对象.freeze()方法。
用法:
Object.freeze(obj)
示例 1:
Javascript
const person = Object.freeze({name: "Geeksforgeeks"});
// TypeError in strict mode
//in non-strict mode it prints "Geeksforgeeks"
person.name = "gfg";
console.log(person.name)
输出:
Geeksforgeeks
Object.freeze()方法是浅方法,这意味着它可以冻结对象的属性,而不是属性引用的对象。
示例 2:
Javascript
const person = Object.freeze({
name: 'Geeksforgeeks',
address: {
city:"Noida"
}
});
person.address.country = "India"
console.log(person.address.country)
但 person.address 对象不是不可变的,您可以向 person.address 对象添加新属性,如下所示:
// No TypeError person.address.country = "India";
输出:
India
结论:
- 常量防止重新分配.
- 对象.freeze()防止可变性.
Object.freeze() |
const |
|
---|---|---|
1. | 对象 freeze() 方法有助于防止现有属性被更改 | const 是 ES6 (2015) 中引入的关键字。 |
2. |
它的语法是-: 对象.冻结(对象) |
如果我们希望某个变量不被声明两次,这会很有帮助。 |
3. | 它采用一个参数作为对象。 |
例如 -: 常量 a = 10; |
4. | 它的返回值是一个对象。 | 如果我们用 const 定义一个变量,那么它就不能被重新赋值。 |
5. | 它还有助于防止将新属性添加到特定对象。 | 如果我们用 const 定义一个变量,那么它的作用域就会被阻塞。 |
相关用法
- Javascript Object.freeze( )用法及代码示例
- Javascript Object.fromEntries()用法及代码示例
- Javascript Object.assign( )用法及代码示例
- Javascript Object.create( )用法及代码示例
- Javascript Object.entries()用法及代码示例
- Javascript Object.is( )用法及代码示例
- Javascript Object.isFrozen( )用法及代码示例
- Javascript Object.isSealed( )用法及代码示例
- Javascript Object.keys( )用法及代码示例
- Javascript Object.seal( )用法及代码示例
- Javascript Object.values( )用法及代码示例
- Javascript Object.getOwnPropertyDescriptor()用法及代码示例
- Javascript Object.defineProperties()用法及代码示例
- Javascript Object.isExtensible()用法及代码示例
- Javascript Object.getOwnPropertySymbols()用法及代码示例
- Javascript Object.getOwnPropertyNames()用法及代码示例
- Javascript Object.setPrototypeOf()用法及代码示例
- Javascript Object.getOwnPropertyDescriptors()用法及代码示例
- Javascript Object.defineProperty()用法及代码示例
- Javascript Object.keys()和Object.entries()的区别用法及代码示例
- Javascript Object转Array用法及代码示例
- Javascript Objects和Prototypes的区别用法及代码示例
- Javascript Atomics.add( )用法及代码示例
- Javascript Atomics.and()用法及代码示例
- Javascript Atomics.compareExchange( )用法及代码示例
注:本文由纯净天空筛选整理自kiranpuli大神的英文原创作品 Difference between Object.freeze() and const in JavaScript。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。