通过说明与示例了解js五种设计模式

 更新时间:2019年06月17日 14:15:39   作者:全栈弄潮儿  
这篇文章主要介绍了通过说明与示例了解js五种设计模式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,,需要的朋友可以参考下

第一种模式:js工厂模式

var lev=function(){ 
return "啊打"; 
}; 
function Parent(){ 
var Child = new Object(); 
Child.name="李小龙"; 
Child.age="30"; 
Child.lev=lev; 
return Child; 
}; 
var x = Parent(); 
alert(x.name); 
alert(x.lev());

说明:

1.在函数中定义对象,并定义对象的各种属性,,虽然属性可以为方法,但是建议将属性为方法的属性定义到函数之外,这样可以避免重复创建该方法

2.引用该对象的时候,这里使用的是 var x = Parent()而不是 var x = new Parent();因为后者会可能出现很多问题(前者也成为工厂经典方式,后者称之为混合工厂方式),不推荐使用new的方式使用该对象

3.在函数的最后返回该对象

4.不推荐使用这种方式创建对象,但应该了解

第二种模式:js构造函数模式

var lev=function(){ 
return "啊打"; 
}; 
function Parent(){ 
this.name="李小龙"; 
this.age="30"; 
this.lev=lev; 
}; 
var x =new Parent(); 
alert(x.name); 
alert(x.lev());

说明:

1.与工厂方式相比,使用构造函数方式创建对象,无需再函数内部重建创建对象,而使用this指代,并而函数无需明确return

2.同工厂模式一样,虽然属性的值可以为方法,扔建议将该方法定义在函数之外

3..同样的,不推荐使用这种方式创建对象,但仍需要了解

第三种模式:js原型模式

var lev=function(){ 
return "啊打"; 
}; 
function Parent(){ }; 
Parent.prototype.name="李小龙"; 
Parent.prototype.age="30"; 
Parent.prototype.lev=lev; 
var x =new Parent(); 
alert(x.name); 
alert(x.lev());

说明:

1.函数中不对属性进行定义

2.利用prototype属性对属性进行定义

3.同样的,不推荐使用这样方式创建对象

第四种模式:构造函数+原型的js混合的模式(推荐)

function Parent(){ 
this.name="李小龙"; 
this.age=32; 
};
Parent.prototype.lev=function(){ 
return this.name; 
};
var x =new Parent();
alert(x.lev());

说明:

1.该模式是指混合搭配使用构造函数方式和原型方式

2.将所有属性不是方法的属性定义在函数中(构造函数方式)
将所有属性值为方法的属性利用prototype在函数之外定义(原型方式)

3.推荐使用这样方式创建对象,这样做有好处和为什么不单独使用构造函数方式和原型方式,由于篇幅问题这里不予讨论

第五种模式:构造函数+原型的动态原型模式(推荐)

function Parent(){ 
this.name="李小龙"; 
this.age=32; 
if(typeof Parent._lev=="undefined"){ 
Parent.prototype.lev=function(){ 
return this.name; 
} 
Parent._lev=true; 
} 
}; 
var x =new Parent(); 
alert(x.lev());

说明:

1.动态原型方式可以理解为混合构造函数,原型方式的一个特例

2.该模式中,属性为方法的属性直接在函数中进行了定义,但是因为

if(typeof Parent._lev=="undefined"){
Parent._lev=true;
}

从而保证创建该对象的实例时,属性的方法不会被重复创建

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • JavaScript遍历Json串浏览器输出的结果不统一问题

    JavaScript遍历Json串浏览器输出的结果不统一问题

    json串属于javascript的一个对象,有键和值对应的对象。这篇文章主要介绍了JavaScript遍历Json串浏览器输出的结果不统一问题的相关资料,需要的朋友可以参考下
    2016-11-11
  • JavaScript判断浏览器对CSS3属性是否支持的多种方法

    JavaScript判断浏览器对CSS3属性是否支持的多种方法

    其实在使用css3的一些属性时,为了兼顾低端浏览器对CSS3的不友好性,往往需要知道某些浏览器是否支持要使用的CSS3属性,以此来做向下适配。比如常见的CSS3动画就很有必要检测浏览器是否支持。下面本文就分享了几种方法,有需要的朋友们可以参考借鉴。
    2016-11-11
  • js实现左右轮播图

    js实现左右轮播图

    这篇文章主要为大家详细介绍了js实现左右轮播图,实现手动和自动两种方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-01-01
  • 元素绑定click点击事件方法

    元素绑定click点击事件方法

    当点击元素时,会发生 click 事件。当鼠标指针停留在元素上方,然后按下并松开鼠标左键时,就会发生一次 click。click() 方法触发 click 事件,或规定当发生 click 事件时运行的函数。
    2015-06-06
  • 利用Js+Css实现折纸动态导航效果实例源码

    利用Js+Css实现折纸动态导航效果实例源码

    这篇文章主要给大家介绍了利用Js+Css实现折纸动态导航的效果,实现后的效果非常不错,文中给出了简单的介绍和完整的实例代码,对大家具有一定的参考价值,有需要的朋友们下面来一起看看吧。
    2017-01-01
  • 移动端触摸滑动插件swiper使用方法详解

    移动端触摸滑动插件swiper使用方法详解

    这篇文章主要为大家详细介绍了移动端触摸滑动插件swiper的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • TypeScript安装与使用的详细教程

    TypeScript安装与使用的详细教程

    TypeScript是JavaScript的超集,扩展了JavaScript的语法,因此现有的JavaScript代码可与TypeScript一起工作无需任何修改,TypeScript通过类型注解提供编译时的静态类型检查,下面这篇文章主要给大家介绍了关于TypeScript安装与使用的详细教程,需要的朋友可以参考下
    2023-01-01
  • Javascript 详解封装from表单数据为json串进行ajax提交

    Javascript 详解封装from表单数据为json串进行ajax提交

    这篇文章主要介绍了Javascript 详解封装from表单数据为json串进行ajax提交的相关资料,需要的朋友可以参考下
    2017-03-03
  • TypeScript入门-基本数据类型

    TypeScript入门-基本数据类型

    本文主要介绍了TypeScript基本数据类型的相关知识。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-03-03
  • 动态加载JavaScript文件的两种方法

    动态加载JavaScript文件的两种方法

    第一种利用ajax方式,第二种是动静创建一个script标签,配置其src属性,经过把script标签拔出到页面head来加载js,感乐趣的网友可以看下
    2016-04-04

最新评论