1.js重构。此方法不能多级继承。
比如defaultSettings 定义一个对象series:{obj1:1,obj2:2},调用的时候时候设置JsExtend({series:{obj1:111}});
最终defaultSettings .series={obj1:111};而不是defaultSettings .series:{obj111:1,obj2:2}。
function JsExtend(settings) {
//默认设置
var defaultSettings = {
objId: ".containter",
speed:300
};
//采用配置项替换默认值,作用类似jquery.extend
if (arguments.length === 1 && typeof arguments[0] === "object") {
var src = arguments[0] || {};
for (key in src) {
if (src[key] && defaultSettings[key] && src[key] === defaultSettings[key])
continue;
else if (src[key])
defaultSettings[key] = src[key];
}
};
};
2.可以利用lodash库,_.defaultsDeep,实现jq的extend。
_.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });
// => { 'a': { 'b': 2, 'c': 3 } }