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 ajax post提交数据乱码
Nov 05 Javascript
javascript常用函数归纳整理
Oct 31 Javascript
js中数组排序sort方法的原理分析
Nov 20 Javascript
JavaScript插件化开发教程(五)
Feb 01 Javascript
jQuery Mobile弹出窗、弹出层知识汇总
Jan 05 Javascript
JS与HTML结合使用marquee标签实现无缝滚动效果代码
Jul 05 Javascript
JS调用某段SQL语句的方法
Oct 20 Javascript
vue表单绑定实现多选框和下拉列表的实例
Aug 12 Javascript
Gulp实现静态网页模块化的方法详解
Jan 09 Javascript
VUE v-for循环中每个item节点动态绑定不同函数的实例
Sep 26 Javascript
解决Vue中引入swiper,在数据渲染的时候,发生不滑动的问题
Sep 27 Javascript
微信小程序使用for循环动态渲染页面操作示例
Dec 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 数据结构 算法描述 冒泡排序 bubble sort
2011/07/10 PHP
PHP fopen 读取带中文URL地址的一点见解
2012/09/25 PHP
数组与类使用PHP的可变变量名需要的注意的问题
2013/06/20 PHP
php跨域cookie共享使用方法
2014/02/20 PHP
PHP 模拟登陆功能实例详解
2019/09/10 PHP
jquery插件如何使用 jQuery操作Cookie插件使用介绍
2012/12/15 Javascript
javascript 实现键盘上下左右功能的小例子
2013/09/15 Javascript
判断滚动条到底部的JS代码
2013/11/04 Javascript
javascript中2个感叹号的用法实例详解
2014/09/04 Javascript
浅谈Node.js中的定时器
2015/06/18 Javascript
纯JS实现本地图片预览的方法
2015/07/31 Javascript
基于JS判断iframe是否加载成功的方法(多种浏览器)
2016/05/13 Javascript
angularjs 中$apply,$digest,$watch详解
2016/10/13 Javascript
vue中设置height:100%无效的问题及解决方法
2018/07/27 Javascript
小程序多图列表实现性能优化的方法步骤
2019/05/28 Javascript
[01:38]2018DOTA2亚洲邀请赛主赛事第二日现场采访 神秘商人痛陈生计不易
2018/04/05 DOTA
使用python生成目录树
2018/03/29 Python
python3+PyQt5使用数据库窗口视图
2018/04/24 Python
Python实现的微信好友数据分析功能示例
2018/06/21 Python
Python爬取数据保存为Json格式的代码示例
2019/04/09 Python
Python 求数组局部最大值的实例
2019/11/26 Python
使用Python给头像加上圣诞帽或圣诞老人小图标附源码
2019/12/25 Python
TensorFlow 多元函数的极值实例
2020/02/10 Python
CSS伪类与CSS伪元素的区别及由来具体说明
2012/12/07 HTML / CSS
html5的websockets全双工通信详解学习示例
2014/02/26 HTML / CSS
网购亚洲时装、美容产品和生活百货:YesStyle
2016/09/15 全球购物
欧舒丹澳洲版:L’OCCITANE
2017/07/17 全球购物
Juicy Couture Beauty官方网站:香水和化妆品
2019/03/12 全球购物
攀岩、滑雪、徒步旅行装备:Black Diamond Equipment
2019/08/16 全球购物
幼教毕业生自我鉴定
2014/01/12 职场文书
《毛主席在花山》教学反思
2014/04/20 职场文书
奥巴马的演讲稿
2014/05/15 职场文书
雷峰塔导游词
2015/02/09 职场文书
十八大观后感
2015/06/12 职场文书
一篇文章带你学习Mybatis-Plus(新手入门)
2021/08/02 Java/Android
windows server 2016 域环境搭建的方法步骤(图文)
2022/06/25 Servers