瀏覽代碼

move proxy/unproxy into observer

Evan You 10 年之前
父節點
當前提交
df5a347700
共有 2 個文件被更改,包括 28 次插入26 次删除
  1. 3 23
      src/runtime/instance/state.js
  2. 25 3
      src/runtime/observer/index.js

+ 3 - 23
src/runtime/instance/state.js

@@ -3,12 +3,13 @@ import Dep from '../observer/dep'
 import {
   observe,
   defineReactive,
-  observerState
+  observerState,
+  proxy,
+  unproxy
 } from '../observer/index'
 import {
   warn,
   hasOwn,
-  isReserved,
   isPlainObject,
   bind,
   getPropValue
@@ -188,24 +189,3 @@ function setData (vm, newData) {
   observe(newData, vm)
   vm.$forceUpdate()
 }
-
-function proxy (vm, key) {
-  if (!isReserved(key)) {
-    Object.defineProperty(vm, key, {
-      configurable: true,
-      enumerable: true,
-      get: function proxyGetter () {
-        return vm._data[key]
-      },
-      set: function proxySetter (val) {
-        vm._data[key] = val
-      }
-    })
-  }
-}
-
-function unproxy (vm, key) {
-  if (!isReserved(key)) {
-    delete vm[key]
-  }
-}

+ 25 - 3
src/runtime/observer/index.js

@@ -6,7 +6,8 @@ import {
   isObject,
   isPlainObject,
   hasProto,
-  hasOwn
+  hasOwn,
+  isReserved
 } from '../util/index'
 
 const arrayKeys = Object.getOwnPropertyNames(arrayMethods)
@@ -261,7 +262,7 @@ export function set (obj, key, val) {
     var i = ob.vms.length
     while (i--) {
       var vm = ob.vms[i]
-      vm._proxy(key)
+      proxy(vm, key)
       vm.$forceUpdate()
     }
   }
@@ -289,8 +290,29 @@ export function del (obj, key) {
     var i = ob.vms.length
     while (i--) {
       var vm = ob.vms[i]
-      vm._unproxy(key)
+      unproxy(vm, key)
       vm.$forceUpdate()
     }
   }
 }
+
+export function proxy (vm, key) {
+  if (!isReserved(key)) {
+    Object.defineProperty(vm, key, {
+      configurable: true,
+      enumerable: true,
+      get: function proxyGetter () {
+        return vm._data[key]
+      },
+      set: function proxySetter (val) {
+        vm._data[key] = val
+      }
+    })
+  }
+}
+
+export function unproxy (vm, key) {
+  if (!isReserved(key)) {
+    delete vm[key]
+  }
+}