js的4种设计模式及Vue小结(1)

4种js设计模式

模块模式(module)

原型模式(prototype)

观察者模式(observer)

单例模式(singleton)

模块模式

模块模式是js种最被常用的设计模式,可以使特定部分的代码与其他部分的代码相对独立,通过松散的耦合支撑了良好的代码结构

可以解决的问题:1.封装---可以避免自身的状态和行为被其他模块获取2.模块应该是立即执行函数也就是闭包,闭包之外的代码不能获取这些私有变量,因为他们不在一个作用域

揭示模块设计模型

是模块设计模型的一个变种

目的:在保有封装的前提下,在返回的对象字面上暴露特定变量和方法

带来的问题(缺点)1.不能引用私有方法,给测试带来麻烦2.公共行为不可覆盖

二、原型设计模式(prototype)

原型设计模式依赖于js原型继承

原型模式主要用于在性能密集的条件下创建对象。

通过传递员是对象的克隆(浅客隆)来创建对象

例:执行数据库操作去创建一个对象,如果另一个应用要使用这个对象,只需要去克隆之前的那个对象即可不需要对这个数据库操作

如何去克隆一个对象构造器去实例化一个对象,使用prototype,绑定变量和方法

三 观察者模式

如果一个对象改变了,它会对依赖他的对象进行告知,告诉他有变化发生了

subject,observer,concret对象都是必要的对象。 subject包含了到observer和concret的引用,从而能够通知任何变化,observer是一个抽象的类,可以允许观察者实现通知的方法

缺点:当观察者增多的时候性能会有显著下降

单例模式

单例模式只允许单次实例化,单例模式组织了客户端创建多个实例,一个对象被创建了后,会返回自己的实例

Vue

Vue属于MV*架构模式

Vue准确说是MVC模式,

M:model(模型)

V:view(视图)

C(控制器)

MCV

也就是说model数据和view视图不能直接交互,需要中间环节也就是C(控制器)去实现数据体现在界面的桥梁

基本的写法

letvm=newVue({    el:'',data:{                  }    })

‘v-'是Vue的指令

API

Vue.extend:

使用Vue基础构造器,创建一个子类,参数是包含子类的对象

var test=Vue,extend({    tempalte:'

{{a}},{{b}}{{c}}

',    data:{        a:1,        b:2,        c:3    }})new test().$mount('#box')

vue.nextTick()

改变DOM后才会执行nextTick(function(){

})里的函数

vue.set(object,key,value)设置对象的属性 主要用于避开vue不能检测属性被添加的限制 触发视图更新

vue.delete(object,key)删除对象的属性

vue.directive注册或全局指令

//注册Vue.directive('test',{    bind:function(){},    insert:function(){},    updata:function(){},    componentUpdata(){},    unbind:function(){}})vardirTest=Vue.directive('test');

vue.filter过滤器

vue.filter('test',function(value){})varmyfilter=vue.filter('test')

你可能感兴趣的:(js的4种设计模式及Vue小结(1))