MST
星途 面试题库

面试题:JavaScript 中基于类对象如何实现简单的安全策略

请阐述在 JavaScript 中,基于类对象实现简单安全策略的思路,并给出一个示例代码,比如如何限制类的某些属性外部不可访问。
44.2万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试

实现思路

在JavaScript中,可以通过WeakMap来实现对类的某些属性外部不可访问。WeakMap的键是对象,且键所指向的对象一旦在其他地方没有引用,WeakMap中的对应记录就会被垃圾回收机制回收。利用这一点,我们可以将需要保护的属性存储在WeakMap中,只有类内部的方法能够通过持有WeakMap实例来访问这些属性,外部无法直接访问。

示例代码

const privateData = new WeakMap();

class SecureClass {
    constructor() {
        // 存储私有属性
        privateData.set(this, {
            secretValue: 'This is a secret'
        });
    }

    getSecretValue() {
        return privateData.get(this).secretValue;
    }
}

// 测试
const instance = new SecureClass();
// 外部无法直接访问secretValue属性
// console.log(instance.secretValue); // 报错
console.log(instance.getSecretValue()); // 输出: This is a secret