多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
> 数组方法编译源码分析(core/observer/array.js) import { def } from '../util/index'; arrayMethods = Object.create(Array.prototype); let methods = ['push','pop','shift','unshift','splice','sort','reverse']; methods.forEach(function (method) { const original = Array.prototype[method]; def(arrayMethods, method, function () { const ob = this.__ob__ //--数据监控对象,该方法由new Observer(value)实例化时调用,在执行该函数时this.__ob__已经存在 let inserted //--定义插入的数据 let args = Array.from(arguments) const result = original.apply(this, args) //---调用原生的函数 switch (method) { case 'push': inserted = args break case 'unshift': inserted = args break case 'splice': inserted = args.slice(2) break } inserted && ob.observeArray(inserted) //--新插入的数据,实现监控 ob.dep.notify() //--发布通知 return result }) })