From c39d0167f037a3696355b5543a28e22eec4b0c24 Mon Sep 17 00:00:00 2001 From: Nikolai Iakovlev Date: Thu, 21 Dec 2017 20:51:37 +0300 Subject: [PATCH 1/2] fix(core): fix defineReactive unnecessary getters call The defineReactive gets the property of the object, only if it has no getter fix #7280 --- src/core/observer/index.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/core/observer/index.js b/src/core/observer/index.js index 86a21f9e4f2..1c5f98b63a6 100644 --- a/src/core/observer/index.js +++ b/src/core/observer/index.js @@ -61,7 +61,7 @@ export class Observer { walk (obj: Object) { const keys = Object.keys(obj) for (let i = 0; i < keys.length; i++) { - defineReactive(obj, keys[i], obj[keys[i]]) + defineReactive(obj, keys[i]) } } @@ -145,6 +145,9 @@ export function defineReactive ( // cater for pre-defined getter/setters const getter = property && property.get + if (!getter && arguments.length <= 2) { + val = obj[key] + } const setter = property && property.set let childOb = !shallow && observe(val) From a8dbd4cc4e91cf8d6df500136131e56f92e98386 Mon Sep 17 00:00:00 2001 From: Nikolai Iakovlev Date: Sat, 23 Dec 2017 15:28:10 +0300 Subject: [PATCH 2/2] refactor(core): strict arguments count compare --- src/core/observer/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/observer/index.js b/src/core/observer/index.js index 1c5f98b63a6..244876b2172 100644 --- a/src/core/observer/index.js +++ b/src/core/observer/index.js @@ -145,7 +145,7 @@ export function defineReactive ( // cater for pre-defined getter/setters const getter = property && property.get - if (!getter && arguments.length <= 2) { + if (!getter && arguments.length === 2) { val = obj[key] } const setter = property && property.set