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 相关文章推荐
JS应用之禁止抓屏、复制、打印
Feb 21 Javascript
javascript 鼠标滚轮事件
Apr 09 Javascript
js 数组操作代码集锦
Apr 28 Javascript
javascript自然分类法算法实现代码
Oct 11 Javascript
原始XMLHttpRequest方法详情回顾
Nov 28 Javascript
Underscore.js常用方法总结
Feb 28 Javascript
javascript+HTML5 Canvas绘制转盘抽奖
May 16 Javascript
Bootstrap 源代码分析(未完待续)
Aug 17 Javascript
BootStrap轻松实现微信页面开发代码分享
Oct 21 Javascript
纯原生js实现贪吃蛇游戏
Apr 16 Javascript
浅谈Vue SSR 的 Cookies 问题
Nov 20 Javascript
vue-cli 关闭热更新操作
Sep 18 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新手用的Insert和Update语句构造类
2012/03/31 PHP
详解PHP发送邮件知识点
2018/05/06 PHP
脚本之家贴图转换+转贴工具用到的js代码超级推荐
2007/04/05 Javascript
JavaScript加密解密7种方法总结分析
2007/10/07 Javascript
Whatever:hover 无需javascript让IE支持丰富伪类
2010/06/29 Javascript
JS判定是否原生方法
2013/07/22 Javascript
javascript的创建多行字符串的7种方法
2014/04/29 Javascript
js进行表单验证实例分析
2015/02/10 Javascript
javascript实现html页面之间参数传递的四种方法实例分析
2015/12/15 Javascript
Bootstrap中CSS的使用方法
2016/02/17 Javascript
使用JavaScript实现ajax的实例代码
2016/05/11 Javascript
JS代码实现table数据分页效果
2016/05/26 Javascript
AngularJS过滤器filter用法总结
2016/12/13 Javascript
原生js实现日期计算器功能
2017/02/17 Javascript
jQuery EasyUI 折叠面板accordion的使用实例(分享)
2017/12/25 jQuery
Vue前端开发规范整理(推荐)
2018/04/23 Javascript
vue+php实现的微博留言功能示例
2019/03/16 Javascript
JavaScript适配器模式原理与用法实例详解
2020/03/09 Javascript
如何基于layui的laytpl实现数据绑定的示例代码
2020/04/10 Javascript
写给新手同学的vuex快速上手指北小结
2020/04/14 Javascript
JavaScript 中的执行上下文和执行栈实例讲解
2021/02/25 Javascript
[01:17:55]VGJ.T vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/20 DOTA
Python实现的ini文件操作类分享
2014/11/20 Python
python3实现短网址和数字相互转换的方法
2015/04/28 Python
python爬虫之线程池和进程池功能与用法详解
2018/08/02 Python
Django 对象关系映射(ORM)源码详解
2019/08/06 Python
python 一篇文章搞懂装饰器所有用法(建议收藏)
2019/08/23 Python
Numpy 理解ndarray对象的示例代码
2020/04/03 Python
Python 解析库json及jsonpath pickle的实现
2020/08/17 Python
Python Selenium实现无可视化界面过程解析
2020/08/25 Python
伦敦鲜花递送:Flower Station
2021/02/03 全球购物
读书心得体会
2013/12/28 职场文书
初一学生评语大全
2014/04/24 职场文书
大学生学习计划书
2014/09/15 职场文书
营销策划分析:怎么策划才能更好销量产品?
2019/09/04 职场文书
golang生成vcf通讯录格式文件详情
2022/03/25 Golang