vue 2.5.1 源码学习 之Vue.extend 和 data的合并策略
1.子类父类
2.Vue.extend() //创建vue的子类
组件的语法器Vue.extend(options)
Profile().$mount('#app')//挂在app上,并替换app
新建initExend
==》Vue.extend
3.strat.data
==>if(!vm){子组件中data的值是一个方法function==>mergeDataorFn()}//数据的合并
==>else{}//通过实例绑定的data实际是一个函数mergeDataorFn
==》mergeDataorFnif(!vm)mergeDataFn==>mergeData()
else==》mergedInstanceDataFn==>mergeData()
mergeData(to,from)//终极合并
jquery.extend//深copy和浅copy
//大体思路(二) //1.子类父类 /* 2.Vue.extend()//创建vue的子类 组件的语法器Vue.extend(options) Profile().$mount('#app')//挂在app上,并替换app 新建initExend ==》Vue.extend */ /*3.strat.data ==>if(!vm){子组件中data的值是一个方法function==>mergeDataorFn()}//数据的合并 ==>else{}//通过实例绑定的data实际是一个函数mergeDataorFn ==》mergeDataorFnif(!vm)mergeDataFn==>mergeData() else==》mergedInstanceDataFn==>mergeData() mergeData(to,from)//终极合并 jquery.extend//深copy和浅copy */ (function(global,factory){ //兼容cmd typeofexports==='object'&&module!=='undefined'?module.exports=factory(): //Amd typeofdefine==='function'&&define.amd?define(factory):global.Vue=factory(); })(this,function(){ varuip=0; functionwarn(string){ console.error('VueWran:'+string) } functionresolveConstructorOptions(Con){ varoptions=Con.options; //判断是否为vm的实例或者是子类 returnoptions } varhasOwnPropeerty=Object.prototype.hasOwnProperty functionhasOwn(obj,key){ returnhasOwnPropeerty.call(obj,key) } functionmakeMap(str,expectsLoweraseC){ if(expectsLoweraseC){ str=str.toLowerCase() } varmap=Object.create(null) varlist=str.split(',') for(vari=0;i