js实现对象数据不可修改有哪些方法,至少说两种
时间: 2024-05-02 10:20:30 浏览: 9
1. 使用Object.freeze()方法将对象冻结,防止修改对象的属性或方法。例如:
```
const obj = {name: 'Tom', age: 20};
Object.freeze(obj);
obj.age = 21; // 不会生效
console.log(obj); // 输出 {name: 'Tom', age: 20}
```
2. 使用Object.seal()方法将对象密封,防止添加或删除对象的属性或方法,但是可以修改属性的值。例如:
```
const obj = {name: 'Tom', age: 20};
Object.seal(obj);
obj.age = 21; // 可以生效
obj.gender = 'male'; // 不会生效
console.log(obj); // 输出 {name: 'Tom', age: 21}
```
相关问题
js中有什么方法让一个对象的属性和方法不可修改
可以使用Object.freeze()方法来冻结一个对象的属性和方法,使其不可修改。例如:
```
const obj = {
name: '张三',
age: 18,
sayHi() {
console.log(`大家好,我是${this.name},今年${this.age}岁。`);
}
};
Object.freeze(obj); // 冻结对象
// 尝试修改对象属性和方法
obj.name = '李四'; // 不会生效
obj.age = 20; // 不会生效
obj.sayHi = function() { console.log('你好'); }; // 不会生效
```
注意,Object.freeze()方法只能冻结对象的直接属性和方法,如果属性值是一个对象,那么这个对象的属性和方法仍然可以被修改。如果需要冻结所有层级的属性和方法,可以使用Object.deepFreeze()方法,它可以递归地冻结一个对象。但是,Object.deepFreeze()方法是一个自定义方法,需要自己实现。
js中对象添加的两种方法
在 JavaScript 中,对象可以通过两种方法添加属性和方法:
1. 通过赋值语句添加属性:
```
const obj = {};
obj.name = 'John';
obj.age = 30;
```
2. 使用 object literal 语法定义对象并添加属性和方法:
```
const obj = {
name: 'John',
age: 30,
greet() {
console.log(`Hi, my name is ${this.name}`);
}
};
```
注意,第二种方法在定义对象时就可以一次性添加多个属性和方法。