如何在 Javascript 中实现带有闭包的继承

How to implement inheritance with closure in Javascript

提问人:kbl 提问时间:9/17/2023 更新时间:9/17/2023 访问量:14

问:

我被要求实现带有闭包的 JS 继承。我有以下代码。

 function CreateUser(name, age) {
        let sharedFunctionalities = {
            sayName() {
                console.log(this.name);
            },
        };
        return function () {
            this.name = name;
            this.age = age;
            this.sharedFunctionalities = () => sharedFunctionalities;
        };
    }
    
    let user = new (CreateUser("jane", 22))();
    
    console.log(user); // {name: 'jane', age: 22, sharedFunctionalities: [Function (anonymous)]}
    
    user.sharedFunctionalities().sayName(); // undefined

我找不到在 sayName 函数中绑定 this 关键字的方法,以便它指向当前对象而不是 sharedFunctionalities 对象。有人可以帮忙吗?我能做到

user.sharedFunctionalities().sayName.call(user)

但这使得代码比现在更笨拙。谢谢。

继承 闭包

评论


答: 暂无答案