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 的 prototype问题。
Jan 03 Javascript
javascript模仿msgbox提示效果代码
Jun 10 Javascript
js浮动图片的动态效果
Jul 10 Javascript
ExtJs设置GridPanel表格文本垂直居中示例
Jul 15 Javascript
详解JavaScript中的异常处理方法
Jun 16 Javascript
jquery实现Ctrl+Enter提交表单的方法
Jul 21 Javascript
详解webpack2异步加载套路
Sep 14 Javascript
解决webpack+Vue引入iView找不到字体文件的问题
Sep 28 Javascript
vue动态绑定class选中当前列表变色的方法示例
Dec 19 Javascript
微信小程序实现多个按钮的颜色状态转换
Feb 15 Javascript
利用React高阶组件实现一个面包屑导航的示例
Aug 23 Javascript
Ajax是什么?Ajax高级用法之Axios技术
Apr 21 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脚本的10个技巧(1)
2006/10/09 PHP
php侧拉菜单 漂亮,可以向右或者向左展开,支持FF,IE
2009/10/15 PHP
php学习笔记之 函数声明
2011/06/09 PHP
php遍历目录输出目录及其下的所有文件示例
2014/01/27 PHP
Joomla实现组件中弹出一个模式(modal)窗口的方法
2016/05/04 PHP
php 截取GBK文档某个位置开始的n个字符方法
2017/03/08 PHP
浅谈php://filter的妙用
2019/03/05 PHP
表单内同名元素的控制
2006/11/22 Javascript
自己做的模拟模态对话框实现代码
2012/05/23 Javascript
js中数组(Array)的排序(sort)注意事项说明
2014/01/24 Javascript
常见的原始JS选择器使用方法总结
2014/04/09 Javascript
使用JavaScript获取地址栏参数的方法
2014/12/19 Javascript
JavaScript结合AJAX_stream实现流式显示
2015/01/08 Javascript
js判断某个方法是否存在实例代码
2015/01/10 Javascript
浅谈js中调用函数时加不加括号的问题
2016/07/28 Javascript
JS刷新父窗口的几种方式小结(推荐)
2016/11/09 Javascript
Vue中保存用户登录状态实例代码
2017/06/07 Javascript
ES6新特性:使用export和import实现模块化详解
2017/07/31 Javascript
iview form清除校验状态的实现
2019/09/19 Javascript
python通过BF算法实现关键词匹配的方法
2015/03/13 Python
用Python将动态GIF图片倒放播放的方法
2016/11/02 Python
Python实现获取照片拍摄日期并重命名的方法
2017/09/30 Python
Python实现正则表达式匹配任意的邮箱方法
2018/12/20 Python
Python小白必备的8个最常用的内置函数(推荐)
2019/04/03 Python
python PyQt5/Pyside2 按钮右击菜单实例代码
2019/08/17 Python
Python打印特殊符号及对应编码解析
2020/05/07 Python
python爬虫如何解决图片验证码
2021/02/14 Python
HTML5中input输入框默认提示文字向左向右移动的示例代码
2020/09/10 HTML / CSS
美国旅游网站:Tours4Fun
2017/02/17 全球购物
小学安全教育材料
2014/02/17 职场文书
领导个人查摆剖析材料
2014/10/29 职场文书
体育教师个人总结
2015/02/09 职场文书
爱国主题班会教案
2015/08/14 职场文书
python unittest单元测试的步骤分析
2021/08/02 Python
详解Vue中$props、$attrs和$listeners的使用方法
2022/02/18 Vue.js
Python+Matplotlib+LaTeX玩转数学公式
2022/02/24 Python