From c5113fd57edf74379ed9f510ef9cfb684972aa0c Mon Sep 17 00:00:00 2001 From: Chen Fengyuan Date: Mon, 23 Jan 2017 21:44:41 +0800 Subject: [PATCH] Simplify extend function --- src/js/utilities.js | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/src/js/utilities.js b/src/js/utilities.js index 0f4c30cef..37ffe6b0f 100644 --- a/src/js/utilities.js +++ b/src/js/utilities.js @@ -95,26 +95,22 @@ export function each(obj, callback) { return obj; } -export function extend(...args) { - const deep = args[0] === true; - const data = deep ? args[1] : args[0]; +export function extend(obj, ...args) { + if (isObject(obj) && args.length > 0) { + if (Object.assign) { + return Object.assign(obj, ...args); + } - if (isObject(data) && args.length > 1) { - args.shift(); args.forEach((arg) => { if (isObject(arg)) { Object.keys(arg).forEach((key) => { - if (deep && isObject(data[key])) { - extend(true, data[key], arg[key]); - } else { - data[key] = arg[key]; - } + obj[key] = arg[key]; }); } }); } - return data; + return obj; } export function proxy(fn, context, ...args) { @@ -142,6 +138,10 @@ export function hasClass(element, value) { } export function addClass(element, value) { + if (!value) { + return; + } + if (isNumber(element.length)) { each(element, (elem) => { addClass(elem, value); @@ -164,6 +164,10 @@ export function addClass(element, value) { } export function removeClass(element, value) { + if (!value) { + return; + } + if (isNumber(element.length)) { each(element, (elem) => { removeClass(elem, value); @@ -182,6 +186,10 @@ export function removeClass(element, value) { } export function toggleClass(element, value, added) { + if (!value) { + return; + } + if (isNumber(element.length)) { each(element, (elem) => { toggleClass(elem, value, added);