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导航
Jan 13 Javascript
用js替换除数字与逗号以外的所有字符的代码
Jun 07 Javascript
js创建表单元素并使用submit进行提交
Aug 14 Javascript
jquery制作select列表双向选择示例代码
Sep 02 Javascript
scrollWidth,clientWidth,offsetWidth的区别
Jan 13 Javascript
JS运动框架之分享侧边栏动画实例
Mar 03 Javascript
JS实现的添加弹出层并完成锁屏操作示例
Apr 07 Javascript
webpack搭建vue 项目的步骤
Dec 27 Javascript
vue中动态添加class类名的方法
Sep 05 Javascript
JQuery实现简单的复选框树形结构图示例【附源码下载】
Jul 16 jQuery
Vue中对iframe实现keep alive无刷新的方法
Jul 23 Javascript
jquery实现简单拖拽效果
Jul 20 jQuery
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/11/04 PHP
PHP微信开发之微信消息自动回复下所遇到的坑
2016/05/09 PHP
Laravel框架路由设置与使用示例
2018/06/12 PHP
jqPlot Option配置对象详解
2009/07/25 Javascript
jQuery插件分享之分页插件jqPagination
2014/06/06 Javascript
jQuery代码实现图片墙自动+手动淡入淡出切换效果
2016/05/09 Javascript
Bootstrap三种表单布局的使用方法
2016/06/21 Javascript
微信小程序 教程之wxapp视图容器 scroll-view
2016/10/19 Javascript
Vue 兄弟组件通信的方法(不使用Vuex)
2017/10/26 Javascript
通过 JS 判断页面是否有滚动条的实现方法
2018/04/05 Javascript
jQuery实现简易聊天框
2020/02/08 jQuery
javascript设计模式 ? 享元模式原理与用法实例分析
2020/04/15 Javascript
js实现列表按字母排序
2020/08/11 Javascript
python执行get提交的方法
2015/04/29 Python
Python中的choice()方法使用详解
2015/05/15 Python
Python数据拟合与广义线性回归算法学习
2017/12/22 Python
Django Web开发中django-debug-toolbar的配置以及使用
2018/05/06 Python
Python返回数组/List长度的实例
2018/06/23 Python
Python对象中__del__方法起作用的条件详解
2018/11/01 Python
Python如何使用OS模块调用cmd
2020/02/27 Python
pandas参数设置的实用小技巧
2020/08/23 Python
TripAdvisor土耳其网站:全球知名旅行社区,真实旅客评论
2017/04/17 全球购物
国际旅客访问北美最大的汽车租赁提供商:Alamo Rent A Car
2018/06/13 全球购物
意大利在线大学图书馆:Libreria universitaria
2019/07/16 全球购物
联想阿根廷官方网站:Lenovo Argentina
2019/10/14 全球购物
Bluebella德国官网:英国性感内衣和睡衣品牌
2019/11/08 全球购物
简述索引存取方法的作用和建立索引的原则
2013/03/26 面试题
用C#语言写出与SQLSERVER访问时的具体过程
2013/04/16 面试题
医学毕业生自荐信
2013/10/11 职场文书
家长会学生家长演讲稿
2013/12/29 职场文书
购房意向书范本
2014/04/01 职场文书
新闻传播专业求职信
2014/07/22 职场文书
庆祝教师节演讲稿
2014/09/03 职场文书
总经理检讨书范文
2015/02/16 职场文书
详解Redis瘦身指南
2021/05/26 Redis
Golang 并发编程 SingleFlight模式
2022/04/26 Golang