備忘錄_20160105(定位) 修改 回首頁

程式 2020-05-27 05:17:24 1590527844 100
建立自己的 JavaScript 函式庫

建立自己的 JavaScript 函式庫
<script>
;
(
  function(global) 
  {
    function myLibrary()
    {
      var out1=33;
      
      var _obj1=
      {
        in1: 26,
        
        arrowFunc: (para1, para2) => { console.log(this, para1, para2); }, // 箭頭函數, this == window
        standardFunc: function(para1, para2) { console.log(this, para1, para2); }, // 標準函數, this == object
        shortFunc(para1, para2) { console.log(para1, para2, this.in1, this.in2, out1); }, // 函數名稱縮短
      };
      
      _obj1.in2=99;
      
      _obj1.appendArrowFunc = (para1, para2)=>{ console.log(this, para1, para2); } // 附加箭頭函數到物件上, this == window
      _obj1.appendStandardFunc = function(para1, para2) { console.log(this, para1, para2, this.in1, this.in2, out1); } // 附加標準函數到物件上, this == object
      
      _obj1.whoIsGlobal = function() { console.log(global); } // 傳進來的參數是 window ,所以此處的 global 是 window
      
      return _obj1;
    }

    if(typeof(global.jj)==='undefined') { global.jj=myLibrary(); }
    else { console.log("名稱已被註冊,jj函式庫初始化失敗!"); }
  }
)(window);
</script>

<script>
jj.arrowFunc("arr1","arr2");
jj.standardFunc("std1","std2");
jj.shortFunc("short1","short2");
jj.appendArrowFunc("appendArr1","appendArr2");
jj.appendStandardFunc("appendStd1","appendStd2");
jj.whoIsGlobal();

// 04:59:35.614  Window...... arr1 arr2
// 04:59:35.616  Object...... std1 std2
// 04:59:35.617  short1 short2 26 99 33
// 04:59:35.617  Window...... appendArr1 appendArr2
// 04:59:35.618  Object...... appendStd1 appendStd2 26 99 33
// 04:59:35.619  Window......
</script>