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 相关文章推荐
$(document).ready(function() {})不执行初始化脚本
Jun 19 Javascript
Javascript中的关键字和保留字整理
Oct 16 Javascript
JavaScript实现将数组中所有元素连接成一个字符串的方法
Apr 06 Javascript
javascript 判断当前浏览器版本并判断ie版本
Feb 17 Javascript
angularjs定时任务的设置与清除示例
Jun 02 Javascript
利用jquery去掉时光轴头尾部线条的方法实例
Jun 16 jQuery
AngularJS service之select下拉菜单效果
Jul 28 Javascript
Vuex提升学习篇
Jan 11 Javascript
解析Angular 2+ 样式绑定方式
Jan 15 Javascript
jQuery实现当拉动滚动条到底部加载数据的方法分析
Jan 24 jQuery
实例分析javascript中的异步
Jun 02 Javascript
原生js实现滑块区间组件
Jan 20 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开发中常用的8个小技巧
2008/08/27 PHP
php中字符查找函数strpos、strrchr与strpbrk用法
2014/11/18 PHP
ThinkPHP表单数据智能写入create方法实例分析
2015/09/27 PHP
PHP获取数组中指定的一列实例
2017/12/27 PHP
laravel-admin的多级联动方法
2019/09/30 PHP
解决火狐浏览器下JS setTimeout函数不兼容失效不执行的方法
2012/11/14 Javascript
JavaScript对内存分配及管理机制详细解析
2013/11/11 Javascript
基于豆瓣API+Angular开发的web App
2015/01/02 Javascript
JQuery控制radio选中和不选中方法总结
2015/04/15 Javascript
基于javascript实现tab切换特效
2016/03/29 Javascript
JavaScript常用字符串与数组扩展函数小结
2016/04/24 Javascript
js友好的时间返回函数
2016/08/24 Javascript
详解nodejs微信公众号开发——1.接入微信公众号
2017/04/10 NodeJs
使用jQuery,Angular实现登录界面验证码详解
2017/04/27 jQuery
js+canvas实现滑动拼图验证码功能
2018/03/26 Javascript
JS实现处理时间,年月日,星期的公共方法示例
2019/05/31 Javascript
快速解决layui弹窗按enter键不停弹窗的问题
2019/09/18 Javascript
可拖拽组件slider.js使用方法详解
2020/12/04 Javascript
在Python中操作字典之fromkeys()方法的使用
2015/05/21 Python
Python实现在某个数组中查找一个值的算法示例
2018/06/27 Python
Python字典循环添加一键多值的用法实例
2019/01/20 Python
代码详解django中数据库设置
2019/01/28 Python
Python 读取串口数据,动态绘图的示例
2019/07/02 Python
python中hasattr()、getattr()、setattr()函数的使用
2019/08/16 Python
python实现WebSocket服务端过程解析
2019/10/18 Python
使用Keras实现简单线性回归模型操作
2020/06/12 Python
Python configparser模块封装及构造配置文件
2020/08/07 Python
python调用win32接口进行截图的示例
2020/11/11 Python
工程测量与监理专业应届生求职信
2013/11/27 职场文书
三年级语文教学反思
2014/02/01 职场文书
计算机大学生职业生涯规划书范文
2014/02/19 职场文书
三八妇女节活动主持词
2014/03/17 职场文书
大学生村官座谈会发言材料
2014/05/25 职场文书
生物科学专业毕业生求职信
2014/06/02 职场文书
python 机器学习的标准化、归一化、正则化、离散化和白化
2021/04/16 Python
解决MySQL添加新用户-ERROR 1045 (28000)的问题
2022/03/03 MySQL