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的图片剪切插件
Aug 03 Javascript
JQuery学习笔录 简单的JQuery
Apr 09 Javascript
jQuery-Tools-overlay 使用介绍
Jul 14 Javascript
利用浏览器全屏api实现js全屏
Jan 16 Javascript
一篇文章掌握RequireJS常用知识
Jan 26 Javascript
javascript运算符——逻辑运算符全面解析
Jun 27 Javascript
在vue中使用jointjs的方法
Mar 24 Javascript
详解Vue打包优化之code spliting
Apr 09 Javascript
Vue验证码60秒倒计时功能简单实例代码
Jun 22 Javascript
JS中数组与对象的遍历方法实例小结
Aug 14 Javascript
实例讲解JS中pop使用方法
Jan 27 Javascript
高效jQuery选择器的5个技巧实例分析
Nov 26 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
深入了解php4(1)--回到未来
2006/10/09 PHP
用PHP实现图象锐化代码
2007/06/14 PHP
两种设置php载入页面时编码的方法
2014/07/29 PHP
PHP使用逆波兰式计算工资的方法
2015/07/29 PHP
PHP的imageTtfText()函数深入详解
2021/03/03 PHP
Prototype Date对象 学习
2009/07/12 Javascript
jquery弹出框的用法示例(一)
2013/08/26 Javascript
JavaScript截断字符串的方法
2015/07/15 Javascript
有关suggest快速删除后仍然出现下拉列表的bug问题
2016/12/02 Javascript
JS实战篇之收缩菜单表单布局
2016/12/10 Javascript
VUE Error: getaddrinfo ENOTFOUND localhost
2018/05/03 Javascript
Vue 菜单栏点击切换单个class(高亮)的方法
2018/08/22 Javascript
小程序自定义单页面、全局导航栏的实现代码
2019/03/15 Javascript
使用webpack编译es6代码的方法步骤
2019/04/28 Javascript
vue 自动化路由实现代码
2019/09/03 Javascript
vue.js+ElementUI实现进度条提示密码强度效果
2020/01/18 Javascript
vue2和vue3的v-if与v-for优先级对比学习
2020/10/10 Javascript
[01:54]TI珍贵瞬间系列(三):翻盘
2020/08/28 DOTA
python3.6+django2.0开发一套学员管理系统
2018/03/03 Python
python 定义给定初值或长度的list方法
2018/06/23 Python
Python对数据进行插值和下采样的方法
2018/07/03 Python
Python构建图像分类识别器的方法
2019/01/12 Python
python快速编写单行注释多行注释的方法
2019/07/31 Python
python opencv圆、椭圆与任意多边形的绘制实例详解
2020/02/06 Python
使用python实现CGI环境搭建过程解析
2020/04/28 Python
pycharm配置QtDesigner的超详细方法
2021/01/25 Python
吃透移动端 1px的具体用法
2019/12/16 HTML / CSS
AmazeUI 图标的示例代码
2020/08/13 HTML / CSS
bareMinerals官网:矿物质化妆品和护肤品
2018/02/04 全球购物
土木工程师岗位职责
2013/11/24 职场文书
护士个人自我鉴定
2014/03/24 职场文书
教师自荐信范文
2015/03/06 职场文书
2016大学自主招生推荐信范文
2015/03/23 职场文书
2016年“抗战胜利纪念日”71周年校园广播稿
2015/12/18 职场文书
python如何正确使用yield
2021/05/21 Python
CSS中实现动画效果-附案例
2022/02/28 HTML / CSS