前言

代码写的久了,就会发现很多时候都是在写一些重复的东西,这个时候就应该要考虑到提高工作效率了,比如对常用方法的封装,例如日期格式化,浏览器类型判断等。

今天这篇文章我们就来看看如何封装常用的Javascript方法,打造出属于自己的一套Javascript武器库吧。封装的代码为了不依赖于其他库,都采用原生的Javascript编写。

Javascript

数组-判断相等

在某些场景下,我们需要判断两个数组是否相等。主要思想如下:

  • 首先判断传入的参数是否为数组,如果不为数组,则返回false;

  • 两个数组内存地址相同,则返回true;

  • 两个数组长度不同,则返回false;

  • 两个数组中每个元素都相等,则返回true。

通过上述的思想,我们得到以下的封装代码。

判断数组相等

判断浏览器类型和版本

在前端开发中经常需要考虑不同类型浏览器的兼容性,那么首先就要获取浏览器的类型,有时要针对不同版本做不同的控制。

在浏览器环境中有个navigator对象,其中有个userAgent属性是可以用来判断浏览器类型和版本的,封装的代码如下所示。

浏览器类型和版本判断

获取操作系统类型

现如今操作系统的类型已经有很多了,PC端有MacOS,Windows,linux,移动端有IOS,Android,WindowsPhone,那么我们该怎么去判断这些类型呢?

在PC端,利用navigator对象的userAgent属性或者vendor属性;在移动端,利用navigator的appVersion属性可以实现,封装的代码如下。

判断操作系统类型

任意对象的深度克隆

对象的克隆是一个很常见的方法,在jQuery和AngularJS等常用框架中都有封装,那么我们也可以自己用原生JS去封装下。

其中对日期Date类型和数组Array类型以及Object对象类型分别用不同的方法处理,最后封装的方法如下。

对象深度克隆

对象判空

判断一个对象是否为空,首先需要判断传入的参数是一个对象,其次其key的长度为0,那么就是一个空对象。

对象判空

随机数字

我们经常会遇到这样的需求,在最小数min和最大数max之间随机生成一个数。

这需要用到Math.random()方法,封装的方法如下。

随机数字

随机颜色

有的时候我们会看到这样一个场景,在页面点击,会随机改变页面的背景色,让人觉得很炫酷,其实就是随机生成了颜色的效果。

在CSS属性中,表示颜色的color属性一般用"#"加上六位十六进制数表示,通过Math.random()方法我们同样可以生成一串表示颜色的随机数字,然后前面拼接上"#",就可以达到上述要求。

随机颜色

数字转化为中文大写金额

在有的与金额有关的系统中,需要显示到中文大写版,但是在实际运算时,一般都是使用数字的,这就需要一种封装的方法去将数字转化为中文大写。

整数部分有'拾', '佰', '仟','万', '亿',小数部分有'角', '分'。

数字有'零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'。

且看看下面是怎么封装的。

数字转为大写金额

正则判断-是否为邮箱

当用户注册信息时,经常需要用到邮箱,这个时候可以使用邮箱的正则表达式去验证填写的信息是否满足格式。

正则表达式

正则判断-是否为手机号

手机号在用户填写信息时已经是一个必填项了,所以判断手机号合法性的正则表达式是很重要的,下面总结了一个方法。

正则判断-是否为手机号

结束语

常用方法的封装在日常的工作中是一件很有必要做的事,可以提高代码复用性,从而提高工作效率。也希望大家平时多做总结,提高代码编写能力。

web前端/H5/javascript学习群:250777811
欢迎大家关注我的微信号公众号,公众号名称:web前端EDU。扫下面的二维码或者收藏下面的二维码关注吧(长按下面的二维码图片、并选择识别图中的二维码)

如何打造属于自己的Javascript武器库(封装方法)的更多相关文章

  1. JavaScript常见封装方法

    1.最简单的,使用变量,然后用匿名函数包裹,不封装 2.对象字面量简单封装(不完整的模块模式,因为无法达到变量.方法私有效果.不过确实有分离和组织代码的能力,也就算一种简略的模块模式的实现方式) va ...

  2. 打造自己的 JavaScript 武器库(转自SegmentFault公众号)

    2017-11-14 SlaneYang SegmentFault 自己打造一把趁手的武器,高效率完成前端业务代码. 前言 作为战斗在业务一线的前端,要想少加班,就要想办法提高工作效率.这里提一个小点 ...

  3. 打造自己的 JavaScript 武器库

    原文 https://segmentfault.com/a/1190000011966867 github:https://github.com/proYang/outils 前言 作为战斗在业务一线 ...

  4. 打造自己的JavaScript武器库(转)

    作者: SlaneYang https://segmentfault.com/a/1190000011966867 前言 作为战斗在业务一线的前端,要想少加班,就要想办法提高工作效率.这里提一个小点, ...

  5. 打造自己的JavaScript武器库

    自己打造一把趁手的武器,高效率完成前端业务代码. 前言 作为战斗在业务一线的前端,要想少加班,就要想办法提高工作效率.这里提一个小点,我们在业务开发过程中,经常会重复用到日期格式化.url参数转对象. ...

  6. JavaScript使用封装

    基本封装方法 请看下面的例子: var Person = function(name,age){ this.name = name; this.age = age || "未填写" ...

  7. 2016/11/17 周四 <javascript的封装简单示例>

    这是一个简单的javascript代码封装的示例以及封装后的调用方法: var ticker={ n:0, add:function() { this.n++; }, show:function() ...

  8. Javascript 封装方法

    基本封装方法 请看下面的例子: var Person = function(name,age){ this.name = name; this.age = age || "未填写" ...

  9. 分享几个Javascript 封装方法

    基本封装方法 请看下面的例子: var Person = function(name,age){ this.name = name; this.age = age || "未填写" ...

随机推荐

  1. js valueOf和toString方法

    JavaScript原生提供一个Object对象,所有其他对象都继承自这个对象,Object对象有valueOf和valueOf方法,所以所有JS数据类型都继承了这两种方法.   valueOf:返回 ...

  2. 孤荷凌寒自学python第四十五天Python初学基础基本结束的下阶段预安装准备

     孤荷凌寒自学python第四十五天Python初学基础基本结束的下阶段预安装准备 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天本来应当继续学习Python的数据库操作,但根据过去我自 ...

  3. cloud.cfg_for_centos

    users: - default disable_root: 0 ssh_pwauth: 1 locale_configfile: /etc/sysconfig/i18n mount_default_ ...

  4. php 报错 Cannot modify header information

    在用CI 开发微信公众号的时候出现下面这么个问题,网上看了一圈解决办法是:把报错的文件用editplus另存为utf-8. Severity: Warning Message: Cannot modi ...

  5. PAT——甲级1065:A+B and C(64bit) 乙级1010一元多项式求导

    甲级1065 1065 A+B and C (64bit) (20 point(s)) Given three integers A, B and C in [−2​63​​,2​63​​], you ...

  6. wireshark简单使用

    过滤表达式的规则   表达式规则   1. 协议过滤   比如TCP,只显示TCP协议. ip.src == 219.216.87.200 and ip.dst==219.216.87.254   2 ...

  7. django QuerySet 的常用API

    为了加深对queryset对象api的了解,我们建立了以下示例模型: from django.db import models class Author(models.Model): "&q ...

  8. nginx记录分析网站响应慢的请求(ngx_http_log_request_speed)

    nginx模块ngx_http_log_request_speed可以用来找出网站哪些请求很慢,针对站点很多,文件以及请求很多想找出哪些请求比较慢的话,这个插件非常有效.作者的初衷是写给自己用的,用来 ...

  9. Java设计模式中适配器模式的实现方法

    在Java开发中,我们常常需要用到Java接口型模式中的适配器模式,那适配器设计模式到底是什么模式呢? 适配器模式(Adapter)就是把一个类的接口变换成客户端所期待的另一种接口,从而使原本接口不匹 ...

  10. TensorFlow 模型文件

    在这篇 TensorFlow 教程中,我们将学习如下内容: TensorFlow 模型文件是怎么样的? 如何保存一个 TensorFlow 模型? 如何恢复一个 TensorFlow 模型? 如何使用 ...