MST

星途 面试题库

面试题:JavaScript 类和原型安全防护之中等题

请解释在 JavaScript 中,如何通过原型链的特性来防止意外修改对象的属性,以达到一定的安全防护目的?举例说明。
41.4万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试
  1. 利用原型链防止意外修改属性的原理
    • 在 JavaScript 中,对象可以从其原型链上继承属性。如果将一些重要的、不希望被意外修改的属性定义在原型链的较高层级,并且设置这些属性的特性(如 writablefalseconfigurablefalse),那么在较低层级的对象上尝试修改这些属性时,由于原型链的特性,可能会被阻止。
  2. 示例代码
// 创建一个原型对象
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 上,并且设置了 writableconfigurablefalse。当在基于该原型的 obj 对象上尝试修改 importantProperty 时,不会成功,从而达到一定的安全防护目的。