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.extendif (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 } }