diff --git a/src/observer/object.js b/src/observer/object.js index 751f1a1cf..17874e9f6 100644 --- a/src/observer/object.js +++ b/src/observer/object.js @@ -14,16 +14,12 @@ _.define( objProto, '$add', function $add (key, val) { + if (this.hasOwnProperty(key)) return var ob = this.__ob__ - if (!ob) { + if (!ob || _.isReserved(key)) { this[key] = val return } - if (_.isReserved(key)) { - _.warn('Refused to $add reserved key: ' + key) - return - } - if (this.hasOwnProperty(key)) return ob.convert(key, val) if (ob.vms) { var i = ob.vms.length @@ -50,17 +46,12 @@ _.define( objProto, '$delete', function $delete (key) { - var ob = this.__ob__ - if (!ob) { - delete this[key] - return - } - if (_.isReserved(key)) { - _.warn('Refused to $add reserved key: ' + key) - return - } if (!this.hasOwnProperty(key)) return delete this[key] + var ob = this.__ob__ + if (!ob || _.isReserved(key)) { + return + } if (ob.vms) { var i = ob.vms.length while (i--) { diff --git a/test/unit/specs/api/data_spec.js b/test/unit/specs/api/data_spec.js index 462c805e9..783c4050f 100644 --- a/test/unit/specs/api/data_spec.js +++ b/test/unit/specs/api/data_spec.js @@ -65,10 +65,9 @@ describe('Data API', function () { expect(vm.c).toBe(1) expect(vm._data.c).toBe(1) expect(vm._digest).toHaveBeenCalled() - // reserved key should warn + // reserved key should not be proxied vm.$add('_c', 1) expect(vm._c).toBeUndefined() - expect(_.warn).toHaveBeenCalled() }) it('$delete', function () { @@ -77,10 +76,9 @@ describe('Data API', function () { expect(vm.hasOwnProperty('a')).toBe(false) expect(vm._data.hasOwnProperty('a')).toBe(false) expect(vm._digest).toHaveBeenCalled() - // reserved key should warn + // reserved key should not be deleted vm.$delete('_data') expect(vm._data).toBeTruthy() - expect(_.warn).toHaveBeenCalled() }) it('$watch', function (done) {