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 相关文章推荐
JavaScript字符串对象的concat方法实例(用于连接两个或多个字符串)
Oct 16 Javascript
javascript检测两个数组是否相似
May 19 Javascript
JavaScript中this详解
Sep 01 Javascript
JS+HTML5手机开发之滚动和惯性缓动实现方法分析
Jun 12 Javascript
动态JavaScript所造成一些你不知道的危害
Sep 25 Javascript
vue.js指令和组件详细介绍及实例
Apr 06 Javascript
mongoose设置unique不生效问题的解决及如何移除unique的限制
Nov 07 Javascript
js合并两个数组生成合并后的key:value数组
May 09 Javascript
详解Angularjs 自定义指令中的数据绑定
Jul 19 Javascript
解决vue-cli@3.xx安装不成功的问题及搭建ts-vue项目
Feb 09 Javascript
vue 组件之间事件触发($emit)与event Bus($on)的用法说明
Jul 28 Javascript
详解JavaScript原型与原型链
Nov 16 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 smarty模版引擎中的缓存应用
2009/12/02 PHP
php中计算时间差的几种方法
2009/12/31 PHP
使用WordPress发送电子邮件的相关PHP函数用法解析
2015/12/15 PHP
PHP的mysqli_select_db()函数讲解
2019/01/23 PHP
php模式设计之观察者模式应用实例分析
2019/09/25 PHP
javascript 学习笔记(六)浏览器类型及版本信息检测代码
2011/04/08 Javascript
基于jquery实现的鼠标滑过按钮改变背景图片
2011/07/15 Javascript
javascript禁用键盘功能键让右击及其他键无效
2013/10/09 Javascript
jQuery1.9.1针对checkbox的调整方法(prop)
2014/05/01 Javascript
js获取时间并实现字符串和时间戳之间的转换
2015/01/05 Javascript
js根据鼠标移动速度背景图片自动旋转的方法
2015/02/28 Javascript
javascript实现继承的简单实例
2015/07/26 Javascript
jQuery使用animate创建动画用法实例
2015/08/07 Javascript
学习JavaScript设计模式之装饰者模式
2016/01/19 Javascript
去除html代码里面的script正则方法
2016/05/19 Javascript
JavaScript面试开发常用的知识点总结
2016/08/08 Javascript
详解Javascript百度地图接口开发文档中的类和方法
2017/02/07 Javascript
javascript 实现文本使用省略号替代(超出固定高度的情况)
2017/02/21 Javascript
JS检测数组类型的方法小结
2017/03/14 Javascript
JavaScript学习笔记之函数记忆
2017/09/06 Javascript
jQuery EasyUI 折叠面板accordion的使用实例(分享)
2017/12/25 jQuery
vue项目中vue-i18n和element-ui国际化开发实现过程
2018/04/25 Javascript
详解vue2.0 资源文件assets和static的区别
2018/11/27 Javascript
JS随机密码生成算法
2019/09/23 Javascript
javascript设计模式 ? 享元模式原理与用法实例分析
2020/04/15 Javascript
Vue过滤器,生命周期函数和vue-resource简单介绍
2021/01/12 Vue.js
python自动化生成IOS的图标
2018/11/13 Python
html5 canvas fillRect坐标和大小的问题解决方法
2014/03/26 HTML / CSS
英国打印机墨盒销售网站:Ink Factory
2019/10/07 全球购物
应届毕业生求职信
2013/11/30 职场文书
法律专业实习鉴定
2013/12/22 职场文书
求职信标题怎么写
2014/05/26 职场文书
社区戒毒工作方案
2014/06/04 职场文书
拾金不昧通报表扬范文
2015/05/05 职场文书
2016年小学生教师节广播稿
2015/12/18 职场文书
24年收藏2000多部退役军用电台
2022/02/18 无线电