From 1ce8357866ea4d0325d4307573fbbba5e2adab5e Mon Sep 17 00:00:00 2001 From: Ilya Sarantsev Date: Sat, 26 Aug 2017 22:42:29 +0300 Subject: [PATCH] Performance optimization for #1941 per @isiahmeadows suggestion --- render/hyperscript.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/render/hyperscript.js b/render/hyperscript.js index ea56c893..00c438c9 100644 --- a/render/hyperscript.js +++ b/render/hyperscript.js @@ -6,6 +6,11 @@ var selectorParser = /(?:(^|#|\.)([^#\.\[\]]+))|(\[(.+?)(?:\s*=\s*("|'|)((?:\\[" var selectorCache = {} var hasOwn = {}.hasOwnProperty +function isEmpty(object) { + for (var key in object) if (hasOwn.call(object, key)) return false + return true +} + function compileSelector(selector) { var match, tag = "div", classes = [], attrs = {} while (match = selectorParser.exec(selector)) { @@ -28,7 +33,7 @@ function execSelector(state, attrs, children) { var hasAttrs = false, childList, text var className = attrs.className || attrs.class - if (Object.keys(state.attrs).length && Object.keys(attrs).length) { + if (!isEmpty(state.attrs) && !isEmpty(attrs)) { var newAttrs = {} for(var key in attrs) {