UNPKG

@mpxjs/core

Version:

mpx runtime core

40 lines (36 loc) 828 B
import { getObserver } from './reactive' import { def } from '@mpxjs/utils' const arrayProto = Array.prototype export const arrayMethods = Object.create(arrayProto) ;[ 'push', 'pop', 'shift', 'unshift', 'splice', 'sort', 'reverse' ].forEach(function (method) { // cache original method const original = arrayProto[method] def(arrayMethods, method, function mutator (...args) { const result = original.apply(this, args) const ob = getObserver(this) if (ob) { let inserted switch (method) { case 'push': case 'unshift': inserted = args break case 'splice': inserted = args.slice(2) break } if (inserted) ob.observeArray(inserted) // notify change ob.dep.notify() } return result }) })