Skip to content

Commit 2d658a6

Browse files
committed
Test whether a property is configurable before defining it as reactive
Fixes #2393
1 parent e0e4062 commit 2d658a6

File tree

2 files changed

+5
-9
lines changed

2 files changed

+5
-9
lines changed

src/observer/index.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -177,13 +177,14 @@ export function observe (value, vm) {
177177
export function defineReactive (obj, key, val) {
178178
var dep = new Dep()
179179

180+
var property = Object.getOwnPropertyDescriptor(obj, key)
181+
if (property && property.configurable === false) {
182+
return
183+
}
184+
180185
// cater for pre-defined getter/setters
181186
var getter, setter
182187
if (config.convertAllProperties) {
183-
var property = Object.getOwnPropertyDescriptor(obj, key)
184-
if (property && property.configurable === false) {
185-
return
186-
}
187188
getter = property && property.get
188189
setter = property && property.set
189190
}

test/unit/specs/observer/observer_spec.js

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -173,9 +173,6 @@ describe('Observer', function () {
173173
})
174174

175175
it('create on property which is marked not configurable', function () {
176-
var previousConvertAllProperties = config.convertAllProperties
177-
config.convertAllProperties = true
178-
179176
// on object
180177
var obj = {}
181178
Object.defineProperty(obj, 'a', {
@@ -188,8 +185,6 @@ describe('Observer', function () {
188185
expect(ob instanceof Observer).toBe(true)
189186
expect(ob.value).toBe(obj)
190187
expect(obj.__ob__).toBe(ob)
191-
192-
config.convertAllProperties = previousConvertAllProperties
193188
})
194189

195190
it('create on array', function () {

0 commit comments

Comments
 (0)