面试题答案
一键面试- 利用原型链防止意外修改属性的原理:
- 在 JavaScript 中,对象可以从其原型链上继承属性。如果将一些重要的、不希望被意外修改的属性定义在原型链的较高层级,并且设置这些属性的特性(如
writable
为false
,configurable
为false
),那么在较低层级的对象上尝试修改这些属性时,由于原型链的特性,可能会被阻止。
- 在 JavaScript 中,对象可以从其原型链上继承属性。如果将一些重要的、不希望被意外修改的属性定义在原型链的较高层级,并且设置这些属性的特性(如
- 示例代码:
// 创建一个原型对象
const proto = Object.create(null);
Object.defineProperty(proto, 'importantProperty', {
value: 'This should not be changed',
writable: false,
configurable: false
});
// 创建一个基于该原型的对象
const obj = Object.create(proto);
// 尝试修改属性
obj.importantProperty = 'new value';
console.log(obj.importantProperty); // 输出 'This should not be changed',修改失败
在上述例子中,importantProperty
定义在原型 proto
上,并且设置了 writable
和 configurable
为 false
。当在基于该原型的 obj
对象上尝试修改 importantProperty
时,不会成功,从而达到一定的安全防护目的。