初学js闭包遇到的问题,如何在闭包时实现继承

发布于 2022-09-02 01:12:41 字数 1065 浏览 19 评论 0

function SomeFunction(arg){
    var self = this;
    self.module1 = function(){            
        return {                 
            moduleFunc: function(){
                console.log(val);
            }
        };
    }
    
    self.module2 = function(){            
        return {                 
            moduleFunc: function(){
                console.log(val);
            }
        };
    }
    
    self.base = function(){
        var val;
        return {
            getValue: function(){
                return val;
            },
            setValue: function(arg){
                val = arg;
            }
        }
    }
    //下面省掉的代码可以保证通过传入arg来确定执行module1还是module2
}
var module1 = SomeFunction("module1");
module1.setValue("xxxx");
console.log(module1.getValue());//期望打印xxxx
module1.moduleFunc();//期望也打印xxxx

现在希望module1和module2执行后返回的object中有base中getValue和setValue两个方法,
同时保证moduleFunc可以访问到base中的val
而且允许module1和module2中使用自己的setValue和getValue覆盖base里默认提供的方法
如何做到继承或者覆盖呢?
可以使用jQuery.extend如果需要的话

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

匿名。 2022-09-09 01:12:41
    self.module1 = function() {
        var insideBase = self.base();

        var ret = {
            moduleFunc: function() {
                console.log(insideBase.getValue());
            }
        };
        
        return jQuery.extend(ret, insideBase);
    }

module2也是一样。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文