| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- var _ = require('../util')
- var objProto = Object.prototype
- /**
- * Add a new property to an observed object
- * and emits corresponding event
- *
- * @param {String} key
- * @param {*} val
- * @public
- */
- _.define(
- objProto,
- '$add',
- function $add (key, val) {
- if (this.hasOwnProperty(key)) return
- var ob = this.__ob__
- if (!ob || _.isReserved(key)) {
- this[key] = val
- return
- }
- ob.convert(key, val)
- ob.dep.notify()
- if (ob.vms) {
- var i = ob.vms.length
- while (i--) {
- var vm = ob.vms[i]
- vm._proxy(key)
- vm._digest()
- }
- }
- }
- )
- /**
- * Set a property on an observed object, calling add to
- * ensure the property is observed.
- *
- * @param {String} key
- * @param {*} val
- * @public
- */
- _.define(
- objProto,
- '$set',
- function $set (key, val) {
- this.$add(key, val)
- this[key] = val
- }
- )
- /**
- * Deletes a property from an observed object
- * and emits corresponding event
- *
- * @param {String} key
- * @public
- */
- _.define(
- objProto,
- '$delete',
- function $delete (key) {
- if (!this.hasOwnProperty(key)) return
- delete this[key]
- var ob = this.__ob__
- if (!ob || _.isReserved(key)) {
- return
- }
- ob.dep.notify()
- if (ob.vms) {
- var i = ob.vms.length
- while (i--) {
- var vm = ob.vms[i]
- vm._unproxy(key)
- vm._digest()
- }
- }
- }
- )
|