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结合PHP+MySQL实现二级联动下拉列表[实例]
Nov 15 Javascript
JS返回上一页实例代码通过图片和按钮分别实现
Aug 16 Javascript
jQuery学习笔记之jQuery原型属性和方法
Jun 09 Javascript
JavaScript运动框架 解决防抖动问题、悬浮对联(二)
May 17 Javascript
vue全局组件与局部组件使用方法详解
Mar 29 Javascript
vue异步加载高德地图的实现
Jun 19 Javascript
animate.css在vue项目中的使用教程
Aug 05 Javascript
在vue里使用codemirror遇到的问题
Nov 01 Javascript
Vue3 中的数据侦测的实现
Oct 09 Javascript
selenium 反爬虫之跳过淘宝滑块验证功能的实现代码
Aug 27 Javascript
Javascript 模拟mvc实现点餐程序案例详解
Dec 24 Javascript
原生JS实现音乐播放器的示例代码
Feb 25 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/07/17 PHP
关于php正则匹配汉字的方法介绍
2013/04/25 PHP
仿新浪微博返回顶部的jquery实现代码
2012/10/01 Javascript
jQuery获得IE版本不准确webbrowser的解决方法
2014/02/23 Javascript
JS通过分析userAgent属性来判断浏览器的类型及版本
2014/03/28 Javascript
js简单的表格添加行和删除行操作示例
2014/03/31 Javascript
推荐5 个常用的JavaScript调试技巧
2015/01/08 Javascript
APP中javascript+css3实现下拉刷新效果
2016/01/27 Javascript
浅谈js中调用函数时加不加括号的问题
2016/07/28 Javascript
js智能获取浏览器版本UA信息的方法
2016/08/08 Javascript
angularjs使用directive实现分页组件的示例
2017/02/07 Javascript
AngularJS ui-router (嵌套路由)实例
2017/03/10 Javascript
jQuery插件ContextMenu自定义图标
2017/03/15 Javascript
JS实现静态页面搜索并高亮显示功能完整示例
2017/09/19 Javascript
如何重置vue打印变量的显示方式
2017/12/06 Javascript
Bootstrap 中data-[*] 属性的整理
2018/03/13 Javascript
微信小程序methods中定义的方法互相调用的实例代码
2018/08/07 Javascript
vue中v-for通过动态绑定class实现触发效果
2018/12/06 Javascript
微信小程序外卖选购页实现切换分类与数量加减功能案例
2019/01/15 Javascript
微信小程序开发之左右分栏效果的实例代码
2019/05/20 Javascript
利用node 判断打开的是文件 还是 文件夹的实例
2019/06/10 Javascript
Vue路由对象属性 .meta $route.matched详解
2019/11/04 Javascript
[04:31]2016国际邀请赛中国区预选赛妖精采访
2016/06/27 DOTA
Python爬虫获取图片并下载保存至本地的实例
2018/06/01 Python
python 同时读取多个文件的例子
2019/07/16 Python
Django中使用haystack+whoosh实现搜索功能
2019/10/08 Python
详解Python 函数参数的拆解
2020/09/02 Python
手把手教你用Django执行原生SQL的方法
2021/02/18 Python
详解如何解决canvas图片getImageData,toDataURL跨域问题
2018/09/17 HTML / CSS
美国婴儿服装购物网站:Gerber Childrenswear
2020/05/06 全球购物
Ooni英国官网:披萨烤箱
2020/05/31 全球购物
开办大学饮食联盟创业计划书
2014/01/29 职场文书
市场策划求职信
2014/08/07 职场文书
关于感恩的演讲稿200字
2014/08/26 职场文书
教师节学生演讲稿
2014/09/03 职场文书
公司处罚决定书
2015/06/24 职场文书