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.ui.dialog 增加“在当前鼠标位置打开”的功能
Nov 24 Javascript
Javascript 面试题随笔
Mar 31 Javascript
jQuery EasyUI API 中文文档 - Tree树使用介绍
Nov 19 Javascript
Javascript selection的兼容性写法介绍
Dec 20 Javascript
通过url查找a元素应用案例
Apr 29 Javascript
Node.js开源应用框架HapiJS介绍
Jan 14 Javascript
AngularJS中的$watch(),$digest()和$apply()区分
Apr 04 Javascript
基于jQuery实现点击列表加载更多效果
May 31 Javascript
Vue指令的钩子函数使用方法
Mar 20 Javascript
vue-cli启动本地服务局域网不能访问的原因分析
Jan 22 Javascript
angularJS实现动态添加,删除div方法
Feb 27 Javascript
支付宝小程序自定义弹窗dialog插件的实现代码
Nov 30 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开发过程中关于继承的使用方法分享
2011/06/17 PHP
PHP垃圾回收机制引用计数器概念分析
2013/06/24 PHP
php+xml实现在线英文词典之添加词条的方法
2015/01/23 PHP
php计算整个目录大小的方法
2015/06/01 PHP
jquery.simple.tree插件 更简单,兼容性更好的无限树插件
2010/09/03 Javascript
基于jquery的复制网页内容到WORD的实现代码
2011/02/16 Javascript
JQuery与JSon实现的无刷新分页代码
2011/09/13 Javascript
统计jQuery中各字符串出现次数的工具
2012/05/03 Javascript
JQuery在页面中添加和除移DOM示例代码
2013/06/24 Javascript
jQuery搜索子元素的方法
2015/02/10 Javascript
解决js图片加载时出现404的问题
2020/11/30 Javascript
jQuery+ajax实现实用的点赞插件代码
2016/07/06 Javascript
jQuery实现自动输入email、时间和域名的方法
2016/08/24 Javascript
js给table赋值的实例代码
2016/10/13 Javascript
微信小程序Server端环境配置详解(SSL, Nginx HTTPS,TLS 1.2 升级)
2017/01/12 Javascript
JS实现的数字格式化功能示例
2017/02/10 Javascript
jQuery自定义元素右键点击事件(实现案例)
2017/04/28 jQuery
jQuery+SpringMVC中的复选框选择与传值实例
2018/01/08 jQuery
[01:25:33]完美世界DOTA2联赛PWL S3 INK ICE vs Magma 第二场 12.20
2020/12/23 DOTA
python清除字符串中间空格的实例讲解
2018/05/11 Python
Django如何防止定时任务并发浅析
2019/05/14 Python
一个非常简单好用的Python图形界面库(PysimpleGUI)
2020/12/28 Python
Darphin迪梵官网: 来自巴黎,植物和精油调制的护肤品牌
2016/10/11 全球购物
德国化妆品和天然化妆品网上商店:kosmetikfuchs.de
2017/06/09 全球购物
美国专业汽车音响和移动电子产品零售商:Car Toys
2019/05/13 全球购物
美国在线购买和出售礼品卡网站:EJ Gift Cards
2019/06/09 全球购物
外语专业毕业生自我评价分享
2013/10/05 职场文书
应届生新闻编辑求职信
2013/11/19 职场文书
开学典礼演讲稿
2014/05/23 职场文书
2015年志愿者服务工作总结
2015/04/20 职场文书
2015年商场工作总结
2015/04/27 职场文书
关于军训的感想
2015/08/07 职场文书
小学副班长竞选稿
2015/11/21 职场文书
MySQL 使用SQL语句修改表名的实现
2021/04/07 MySQL
Python pyecharts绘制条形图详解
2022/04/02 Python
python解析json数据
2022/04/29 Python