Преглед на файлове

Test whether a property is configurable before defining it as reactive

Fixes vuejs/vue#2393
Saul Rennison преди 10 години
родител
ревизия
2d658a6fca
променени са 2 файла, в които са добавени 5 реда и са изтрити 9 реда
  1. 5 4
      src/observer/index.js
  2. 0 5
      test/unit/specs/observer/observer_spec.js

+ 5 - 4
src/observer/index.js

@@ -177,13 +177,14 @@ export function observe (value, vm) {
 export function defineReactive (obj, key, val) {
   var dep = new Dep()
 
+  var property = Object.getOwnPropertyDescriptor(obj, key)
+  if (property && property.configurable === false) {
+    return
+  }
+
   // cater for pre-defined getter/setters
   var getter, setter
   if (config.convertAllProperties) {
-    var property = Object.getOwnPropertyDescriptor(obj, key)
-    if (property && property.configurable === false) {
-      return
-    }
     getter = property && property.get
     setter = property && property.set
   }

+ 0 - 5
test/unit/specs/observer/observer_spec.js

@@ -173,9 +173,6 @@ describe('Observer', function () {
   })
 
   it('create on property which is marked not configurable', function () {
-    var previousConvertAllProperties = config.convertAllProperties
-    config.convertAllProperties = true
-
     // on object
     var obj = {}
     Object.defineProperty(obj, 'a', {
@@ -188,8 +185,6 @@ describe('Observer', function () {
     expect(ob instanceof Observer).toBe(true)
     expect(ob.value).toBe(obj)
     expect(obj.__ob__).toBe(ob)
-
-    config.convertAllProperties = previousConvertAllProperties
   })
 
   it('create on array', function () {