JavaScript常用小技巧小結

3530 ワード

前言
     最近触れた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      _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