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_14_函数形式参数与arguments
Oct 20 Javascript
JavaScript.The.Good.Parts阅读笔记(二)作用域&amp;闭包&amp;减缓全局空间污染
Nov 16 Javascript
原来Jquery.load的方法可以一直load下去
Mar 28 Javascript
js 链式延迟执行DOME
Jan 04 Javascript
JavaScript事件处理器中的event参数使用介绍
May 24 Javascript
javascript中字符串的定义示例代码
Dec 19 Javascript
JQuery调用WebServices的方法和4个实例
May 06 Javascript
js遍历子节点子元素附属性及方法
Aug 19 Javascript
jQuery截取指定长度字符串代码
Aug 21 Javascript
JavaScript用构造函数如何获取变量的类型名
Dec 23 Javascript
关于Vue的路由权限管理的示例代码
Mar 06 Javascript
使用vue-element-admin框架从后端动态获取菜单功能的实现
Apr 29 Vue.js
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 5.0 Pear安装方法
2006/12/06 PHP
Yii入门教程之目录结构、入口文件及路由设置
2014/11/25 PHP
php实现通过cookie换肤的方法
2015/07/13 PHP
Linux安装配置php环境的方法
2016/01/14 PHP
PHP中call_user_func_array回调函数的用法示例
2016/11/26 PHP
Laravel基础_关于view共享数据的示例讲解
2019/10/14 PHP
你的编程语言可以这样做吗?
2006/09/07 Javascript
extJs 文本框后面加上说明文字+下拉列表选中值后触发事件
2009/11/27 Javascript
JavaScript高级程序设计 阅读笔记(十八) js跨平台的事件
2012/08/14 Javascript
扩展JS Date对象时间格式化功能的小例子
2013/12/02 Javascript
jQuery Tree Multiselect使用详解
2017/05/02 jQuery
JavaScript表单验证实现代码
2017/05/22 Javascript
详解vue-cil和webpack中本地静态图片的路径问题解决方案
2017/09/27 Javascript
js replace 全局替换的操作方法
2018/06/12 Javascript
vuejs实现折叠面板展开收缩动画效果
2018/09/06 Javascript
详解react内联样式使用webpack将px转rem
2018/09/13 Javascript
详解vue2.6插槽更新v-slot用法总结
2019/03/09 Javascript
vue实现条件叠加搜索的解决方法
2019/05/28 Javascript
解决Layui中layer报错的问题
2019/09/03 Javascript
vue实现百度搜索功能
2020/12/28 Javascript
JavaScript数组去重实现方法小结
2020/01/17 Javascript
[57:41]Secret vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
pyqt和pyside开发图形化界面
2014/01/22 Python
python去除所有html标签的方法
2015/05/05 Python
Python get获取页面cookie代码实例
2018/09/12 Python
不到20行代码用Python做一个智能聊天机器人
2019/04/19 Python
python连接、操作mongodb数据库的方法实例详解
2019/09/11 Python
30秒学会30个超实用Python代码片段【收藏版】
2019/10/15 Python
scrapy头部修改的方法详解
2020/12/06 Python
WEB控件及HTML服务端控件能否调用客户端方法?如果能,请解释如何调用?
2015/08/25 面试题
介绍一下linux的文件系统
2012/03/20 面试题
艺术爱好者的自我评价分享
2013/10/08 职场文书
安踏广告词改编版
2014/03/21 职场文书
企业宣传工作方案
2014/06/02 职场文书
局机关干部群众路线个人对照检查材料思想汇报
2014/10/05 职场文书
数学考试作弊检讨书300字
2015/02/16 职场文书