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 miscellanea -display data real time, using window.status
Jan 09 Javascript
Javascript继承机制的设计思想分享
Aug 28 Javascript
写自已的js类库需要的核心代码
Jul 16 Javascript
JS合并数组的几种方法及优劣比较
Sep 19 Javascript
JavaScript中数组成员的添加、删除介绍
Dec 30 Javascript
Javascript aop(面向切面编程)之around(环绕)分析
May 01 Javascript
关于angular js_$watch监控属性和对象详解
Apr 24 Javascript
JS实现上传图片的三种方法并实现预览图片功能
Jul 14 Javascript
ES6中定义类和对象的方法示例
Jul 31 Javascript
JavaScript数组排序小程序实现解析
Jan 13 Javascript
js实现自定义右键菜单
May 18 Javascript
微信小程序自定义modal弹窗组件的方法详解
Dec 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查看session内容的函数
2008/08/27 PHP
深入理解:单一入口、MVC、ORM、CURD、ActiveRecord概念
2013/06/06 PHP
主流PHP框架的优缺点对比分析
2014/12/25 PHP
PHP准确取得服务器IP地址的方法
2015/06/02 PHP
PHP面向对象程序设计实例分析
2016/01/26 PHP
POST一个JSON格式的数据给Restful服务实例详解
2017/04/07 PHP
详解json在php中的应用
2018/09/30 PHP
基于jQuery的消息提示插件之旅 DivAlert(三)
2010/04/01 Javascript
JQuery入门——事件切换之hover()方法应用介绍
2013/02/05 Javascript
JS判断不能为空实例代码
2013/11/26 Javascript
JQuery中serialize()、serializeArray()和param()方法示例介绍
2014/07/31 Javascript
JS+CSS实现淡入式焦点图片幻灯切换效果的方法
2015/02/26 Javascript
javascript针对不确定函数的执行方法
2015/12/16 Javascript
早该知道的7个JavaScript技巧
2016/06/21 Javascript
AngularJS  ng-table插件设置排序
2016/09/21 Javascript
jQuery easyui刷新当前tabs的方法
2016/09/23 Javascript
javascript基础知识之html5轮播图实例讲解(44)
2017/02/17 Javascript
node跨域请求方法小结
2017/08/25 Javascript
浅谈angular4生命周期钩子
2017/09/05 Javascript
vue2.0之多页面的开发的示例
2018/01/30 Javascript
Angular4集成ng2-file-upload的上传组件
2018/03/14 Javascript
vue中el-upload上传图片到七牛的示例代码
2018/10/19 Javascript
Openlayers绘制地图标注
2020/09/28 Javascript
python将字符串以utf-8格式保存在txt文件中的方法
2018/10/30 Python
python找出完数的方法
2018/11/12 Python
Python实现使用request模块下载图片demo示例
2019/05/24 Python
对python中各个response的使用说明
2020/03/28 Python
详解用Pytest+Allure生成漂亮的HTML图形化测试报告
2020/03/31 Python
Django日志及中间件模块应用案例
2020/09/10 Python
联想智利官方网站:Lenovo Chile
2020/06/03 全球购物
琳达·法罗眼镜英国官网:Linda Farrow英国
2021/01/19 全球购物
电气技术员岗位职责
2013/11/19 职场文书
法律专业求职信
2014/05/24 职场文书
社区灵活就业证明
2014/11/03 职场文书
企业法律事务工作总结
2015/08/11 职场文书
Python用tkinter实现自定义记事本的方法详解
2022/03/31 Python