JavaScript中的類繼承實現方式

jopen 9年前發布 | 1K 次閱讀 JavaScript

/**

  • 把一個實例方法添加到一個類中
  • 這個將會添加一個公共方法到 Function.prototype中,
  • 這樣通過類擴展所有的函數都可以用它了。它要一個名稱和一個函數作為參數。
  • 它返回 this。當我寫一個沒有返回值的方法時,我通常都會讓它返回this。
  • 這樣可以形成鏈式語句。 *
  • */ Function.prototype.method = function (name, func) { this.prototype[name] = func; return this; }; /**
  • 它會指出一個類是繼承自另一個類的。
  • 它必須在兩個類都定義完了之后才能定義,但要在方法繼承之前調用。 *
  • */ Function.method('inherits', function (parent) { var d = 0, p = (this.prototype = new parent());

    this.method('uber', function uber(name) {

     var f, r, t = d, v = parent.prototype;
     if (t) {
         while (t) {
             v = v.constructor.prototype;
             t -= 1;
         }
         f = v[name];
     } else {
         f = p[name];
         if (f == this[name]) {
             f = v[name];
         }
     }
     d += 1;
     r = f.apply(this, Array.prototype.slice.apply(arguments, [1]));
     d -= 1;
     return r;
    

    }); return this; }); /*

  • The swiss方法對每個參數進行循環。每個名稱,
  • 它都將parent的原型中的成員復制下來到新的類的prototype中 *
  • */ Function.method('swiss', function (parent) { for (var i = 1; i < arguments.length; i += 1) {
     var name = arguments[i];
     this.prototype[name] = parent.prototype[name];
    
    } return this; });</pre>
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!