类
代码:
在Model.js文件中:
class Model{//处于对象的自身上constructor(options) {this.data = options.data}//下面的函数是处于原型链中create(){console && console.error && console.error('你没有实现create')}delete(){console && console.error && console.error('你没有实现delete')}update(){console && console.error && console.error('你没有实现update')}get(){console && console.error && console.error('你没有实现get')}}export default Model
在app1.js文件中
代码:
import Model from "./base/Model";const m = new Model({data: {n: parseInt(localStorage.getItem('n')) || 100}})//对象里面放数据!m.update=()=>{Object.assign(m.data, data)eventBus.trigger('m:updated')localStorage.setItem('n', m.data.n)}
用自身的函数覆盖原型链上函数
//简化版的函数class Model{//处于对象的自身上constructor(options) {//simplify function['data','update','create','delete','get'].foreach((key)=>{if(key in options){this[key]=options}})/*未简化的代码this.data = options.datathis.update = options.datathis.create = options.createthis.delete = options.deletethis.get = options.get*/}//下面的函数是处于原型链中create(){console && console.error && console.error('你没有实现create')}delete(){console && console.error && console.error('你没有实现delete')}update(){console && console.error && console.error('你没有实现update')}get(){console && console.error && console.error('你没有实现get')}}export default Model
胶水层
继承
EventBus代码:
import $ from 'jquery'class EventBus{constructor() {this._eventBus = $(window)}on(eventName,fn){return this._eventBus.on(eventName,fn)}trigger(eventName,data){return this._eventBus.trigger(eventName,data)}off(eventName,fn){return this._eventBus.off(eventName,fn)}}export default EventBus
Model代码:
import EventBus from "./EventBus";class Model extends EventBus{//处于对象的自身上constructor(options) {super()const keys = ['data','create','delete','update','get']keys.forEach((key)=>{if(key in options){this[key]=options[key]}})}//下面的函数是处于原型链中create(){console && console.error && console.error('你没有实现create')}delete(){console && console.error && console.error('你没有实现delete')}update(){console && console.error && console.error('你没有实现update')}get(){console && console.error && console.error('你没有实现get')}}export default Model
用法:
m.trigger('m:updated')
路由
程序的函数
console.dir()和console.log的区别:
console.log()会在浏览器控制台打印出信息console.dir()可以显示一个对象的所有属性和方法
写代码时注意的地方:
1.写代码时不可以用”[“开头
原因:他会自动找上一行进行合并!
报错:
(intermediate value)(intermediate value)[("data" , "create" , "delete" , "update" , "get")].forEach is not a function
const fn=()=>[1,2,3,4]//函数返回一个数组fn()[0]answer:1
2.this.n中的n并不是函数!
当n变化的时候执行一个函数!

