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) {
} return this; });</pre>var name = arguments[i]; this.prototype[name] = parent.prototype[name];
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!