Evan You 10 лет назад
Родитель
Сommit
542035f3c1
1 измененных файлов с 10 добавлено и 4 удалено
  1. 10 4
      src/runtime/instance/render.js

+ 10 - 4
src/runtime/instance/render.js

@@ -124,8 +124,10 @@ function resolveSlots (vm, children) {
 }
 
 function diffParentData (data, oldData) {
-  let key, old, cur
-  for (key in oldData) {
+  const keys = Object.keys(oldData)
+  let key, old, cur, i, l, j, k
+  for (i = 0, l = keys.length; i < l; i++) {
+    key = keys[i]
     cur = data[key]
     old = oldData[key]
     if (key === 'on') continue
@@ -133,7 +135,7 @@ function diffParentData (data, oldData) {
     if (isArray(old)) {
       if (!isArray(cur)) return true
       if (cur.length !== old.length) return true
-      for (let i = 0; i < old.length; i++) {
+      for (j = 0, k = old.length; j < k; j++) {
         if (isObject(old[i])) {
           if (!isObject(cur[i])) return true
           if (diffObject(cur, old)) return true
@@ -145,10 +147,14 @@ function diffParentData (data, oldData) {
       return true
     }
   }
+  return false
 }
 
 function diffObject (cur, old) {
-  for (var key in old) {
+  const keys = Object.keys(old)
+  let i, l, key
+  for (i = 0, l = keys.length; i < l; i++) {
+    key = keys[i]
     if (cur[key] !== old[key]) return true
   }
 }