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 相关文章推荐
js 可拖动列表实现代码
Dec 13 Javascript
玩转jQuery按钮 请告诉我你最喜欢哪些?
Jan 08 Javascript
javascript中的Base64、UTF8编码与解码详解
Mar 18 Javascript
详解AngularJS过滤器的使用
Mar 11 Javascript
全面解析Bootstrap中transition、affix的使用方法
May 30 Javascript
angularjs实现的前端分页控件示例
Feb 10 Javascript
关于vue.js发布后路径引用的问题解决
Aug 15 Javascript
JS实现的抛物线运动效果示例
Jan 30 Javascript
原生JS实现逼真的图片3D旋转效果详解
Feb 16 Javascript
Vue 实现分页与输入框关键字筛选功能
Jan 02 Javascript
JavaScript执行机制详细介绍
Dec 06 Javascript
JavaScript实现栈结构详细过程
Dec 06 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中文件上传的安全问题
2006/10/09 PHP
PHP strstr 函数判断字符串是否否存在的实例代码
2013/09/28 PHP
is_uploaded_file函数引发的不能上传文件问题
2013/10/29 PHP
删除html标签得到纯文本可处理嵌套的标签
2014/04/28 PHP
PHP中array_slice函数用法实例详解
2014/11/25 PHP
php可应用于面包屑导航的迭代寻找家谱树实现方法
2015/02/02 PHP
Yii2中关联查询简单用法示例
2016/08/10 PHP
MooTools 1.2介绍
2009/09/14 Javascript
javascript void(0)的妙用
2009/10/21 Javascript
javascript 实现 秒杀,团购 倒计时展示的记录 分享
2013/07/12 Javascript
JS中prototype关键字的功能介绍及使用示例
2013/07/21 Javascript
js将table的每个td的内容自动赋值给其title属性的方法
2016/10/13 Javascript
el表达式 写入bootstrap表格数据页面的实例代码
2017/01/11 Javascript
BOM之navigator对象和用户代理检测
2017/02/10 Javascript
微信小程序 wx:for的使用实例详解
2017/04/27 Javascript
Angular.Js中过滤器filter与自定义过滤器filter实例详解
2017/05/08 Javascript
JavaScript之生成器_动力节点Java学院整理
2017/06/30 Javascript
jQuery实现QQ空间汉字转拼音功能示例
2017/07/10 jQuery
夯基础之手撕javascript继承详解
2020/11/09 Javascript
用Python实现一个简单的线程池
2015/04/07 Python
Python骚操作之动态定义函数
2019/03/26 Python
tensorflow 20:搭网络,导出模型,运行模型的实例
2020/05/26 Python
Python代码中如何读取键盘录入的值
2020/05/27 Python
python爬虫筛选工作实例讲解
2020/11/23 Python
网页切图的CSS和布局经验与要点
2015/04/09 HTML / CSS
Bowflex美国官方网站:高级家庭健身器材
2017/12/22 全球购物
教师实习自我鉴定
2013/12/18 职场文书
先进事迹报告会主持词
2014/04/02 职场文书
个人承诺书格式
2014/06/03 职场文书
4s店销售经理岗位职责
2014/07/19 职场文书
2014年班长个人工作总结
2014/11/14 职场文书
2015小学语文教师个人工作总结
2015/05/20 职场文书
甲午大海战观后感
2015/06/02 职场文书
selenium.webdriver中add_argument方法常用参数表
2021/04/08 Python
PyQt5结合QtDesigner实现文本框读写操作
2021/06/11 Python
python获取字符串中的email
2022/03/31 Python