我希望我的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” =>已经很长时间了,因为我一直在等待使用这些键盘功能一次:))。