我希望我的JavaScript类可以从外部进行配置。因此,我创建了一个私有(private)的config -property和一个loadConfig -method。我的问题是,当我加载配置时,它会完全覆盖配置属性,而不仅仅是我定义的属性。

(function() {
var config = {
    param: value,
    group: {
        groupParam: value
    }
};
function MyClass() {
    this.loadConfig = function(loadConfig) {
        if (typepof loadConfig == "undefined" || typeof loadConfig == "null")
            return;
        else
            config = loadConfig;
    };
}
window.MyClass = new MyClass();
})();

当我加载自定义配置时
<script type="text/javascript">
    var config = {
        group: {
            groupParam: "newValue"
        }
    };

    MyClass.loadConfig(config);
</script>

我希望config.param仍然是“值”,而config.group.groupParam是“newValue”。

当前,该对象已被覆盖,并且在loadConfig()之后,config.param不再存在。

最佳答案

如果您不想重新发明轮子,那么jQuery具有一个很棒的功能,称为 $.extend() ,它似乎是您所需要的。

例如,您可以在jQuery 1.6.1 source中进行检查(Ctrl + F和“extend” =>已经很长时间了,因为我一直在等待使用这些键盘功能一次:))。

09-08 00:08