JavaScript常用小技巧小结


Posted in Javascript onDecember 29, 2014

前言

     总结一下最近接触到的JavaScript语法糖,与大家共享。

     每块糖都有详细的说明和示例,就不多说了。

准确的类型检查

 /*

 * @function:

 *   类型检查示例

 *   通过此方法,可以检查某个变量是否为期望的数据类型

 * @params:

 *   obj 需要检查的变量,必选

 *   config 数据类型白名单,可选,默认为全部类型

 * @return:

 *   true 表示检查通过,false 未通过

 * @examples:

 *   typeCheck("str"); //return true

 *   typeCheck({},{"[object Array]": 1}); //return false

 */

 function typeCheck(obj,config){

   var hasOp = Object.prototype.hasOwnProperty,

       toStr = Object.prototype.toString,

       _config = config || {

         "[object Object]": 1,

         "[object Array]": 1,

         "[object Regex]": 1,

         "[object String]": 1,

         "[object Number]": 1,

         "[object Boolean]": 1,

         "[object Function]": 1,

         "[object Undefined]": 1,

         "[object Null]": 1

       };

   

   return hasOp.call(_config,toStr.call(obj));

 }

 优雅的添加原型方法

 /*

 * @description:

 *   优雅的添加原型方法

 *   在公共作用域执行此代码片段即可

 */

 if(typeof Function.prototype.method !== "function") {

   Function.prototype.method = function(name,fn){

     this.prototype[name] = fn;

     return this;

   };

 }

 /*

 * 使用示例

 */

 //定义一个“测试类”

 function testFn(){

 }

 //添加测试类的成员方法

 testFn.method("add",function(a,b){

   return a + b;

 }).method("sub",function(a,b){

   return a - b;

 });

 //实例化

 var testObj = new testFn();

 //调用成员方法

 testObj.add(1,5);  //return 6

 testObj.sub(7,2);  //return 5

 快捷创建命名空间

 /*

 * @function:

 *   创建命名空间

 * @params:

 *   ex 命名空间表达式,例如:NSROOT.service.impl

 *   此表达式必须从根节点开始写起

 * @return:

 *   返回Object,此Object是表达式的最后一个节点

 * @others:

 *   如果您不喜欢NSROOT这个命名,简单的查找替换即可

 */

 var NSROOT = NSROOT || {};

 NSROOT.namespace = function(ex){

   var _ex = ex || "",

       nsArray = _ex.split("."),

       parentNode = NSROOT,

       _s = "",

       i = 0;

   //判断命名空间是否从根节点开始

   if(nsArray[0] !== "NSROOT"){

     throw("命名空间必须从根节点开始!");

   }

   //去掉root节点

   nsArray = nsArray.slice(1);

   for(i = 0;i<nsArray.length;i++){

     _s = nsArray[i];

     if(parentNode[_s] === undefined){

       parentNode[_s] = {};

     }

     parentNode = parentNode[_s];

   }

   return parentNode;

 };

 /*

 * 使用示例

 */

 //创建新的命名空间

 var impl = NSROOT.namespace("NSROOT.service.impl");

 alert(impl === NSROOT.service.impl);  //return true

 //创建已有的命名空间,不覆盖原来的数据

 NSROOT.namespace("NSROOT.service.impl");

 alert(impl === NSROOT.service.impl);  //return true
Javascript 相关文章推荐
jquery遍历之parent()和parents()的区别及parentsUntil()方法详解
Dec 02 Javascript
jQuery实现简单二级下拉菜单
Apr 12 Javascript
浅析jQuery Ajax请求参数和返回数据的处理
Feb 24 Javascript
JQuery ztree带筛选、异步加载实例讲解
Feb 25 Javascript
Node.js的环境安装配置(使用nvm方式)
Oct 11 Javascript
Vue.js双向绑定操作技巧(初级入门)
Dec 27 Javascript
JavaScript实现向select下拉框中添加和删除元素的方法
Mar 07 Javascript
记一次webapck4 配置文件无效的解决历程
Sep 19 Javascript
Electron autoUpdater实现Windows安装包自动更新的方法
Dec 24 Javascript
JavaScript使用闭包模仿块级作用域操作示例
Jan 21 Javascript
手把手带你搭建一个node cli的方法示例
Aug 07 Javascript
vue中后端做Excel导出功能返回数据流前端的处理操作
Sep 08 Javascript
jQuery中:gt选择器用法实例
Dec 29 #Javascript
在浏览器中实现图片粘贴的jQuery插件-- pasteimg使用指南
Dec 29 #Javascript
JavaScript中的值类型详细介绍
Dec 29 #Javascript
JavaScript不使用prototype和new实现继承机制
Dec 29 #Javascript
JavaScript中的console.assert()函数介绍
Dec 29 #Javascript
jQuery中:eq()选择器用法实例
Dec 29 #Javascript
根据配置文件加载js依赖模块
Dec 29 #Javascript
You might like
php中通过DirectoryIterator删除整个目录的方法
2015/03/13 PHP
php实现Session存储到Redis
2015/11/11 PHP
浅谈PHP正则中的捕获组与非捕获组
2016/07/18 PHP
php微信开发接入
2016/08/27 PHP
PHP简单数据库操作类实例【支持增删改查及链式操作】
2016/10/10 PHP
php实现websocket实时消息推送
2018/03/30 PHP
根据邮箱的域名跳转到相应的登录页面的代码
2012/02/27 Javascript
JS 实现图片直接下载示例代码
2013/07/22 Javascript
jQuery 无刷新分页实例代码
2013/11/12 Javascript
javascript实现的一个随机点名功能
2014/08/26 Javascript
Javascript基于对象三大特性(封装性、继承性、多态性)
2016/01/04 Javascript
再谈javascript常见错误及解决方法
2016/09/16 Javascript
9个让JavaScript调试更简单的Console命令
2016/11/14 Javascript
bootstrap导航栏、下拉菜单、表单的简单应用实例解析
2017/01/06 Javascript
NodeJs实现定时任务的示例代码
2017/12/05 NodeJs
vue2.0 elementUI制作面包屑导航栏
2018/02/22 Javascript
详解Webpack多环境代码打包的方法
2018/08/03 Javascript
Vue实现底部侧边工具栏的实例代码
2018/09/03 Javascript
使用js获取身份证年龄的示例代码
2020/12/11 Javascript
Python datetime时间格式化去掉前导0
2014/07/31 Python
Python实现在线程里运行scrapy的方法
2015/04/07 Python
Django中的CBV和FBV示例介绍
2018/02/25 Python
python3+PyQt5实现自定义流体混合窗口部件
2018/04/24 Python
详解python算法之冒泡排序
2019/03/05 Python
python如何实现异步调用函数执行
2019/07/08 Python
Pandas实现dataframe和np.array的相互转换
2019/11/30 Python
完美解决keras保存好的model不能成功加载问题
2020/06/11 Python
python matplotlib库的基本使用
2020/09/23 Python
Python入门基础之数字字符串与列表
2021/02/01 Python
加拿大便宜的隐形眼镜商店:Clearly
2016/09/15 全球购物
英国在线汽车和面包车零件商店:Car Parts 4 Less
2018/08/15 全球购物
农民致富事迹材料
2014/01/23 职场文书
名人演讲稿范文
2014/09/16 职场文书
2014年个人教学工作总结
2014/12/09 职场文书
Python中zipfile压缩包模块的使用
2021/05/14 Python
SpringBoot中获取profile的方法详解
2022/04/08 Java/Android