2010-02-13 167 views
57

什麼是擴展一個JavaScript類的權利/最好的方式,使B類繼承一切從類A(B類擴展A)?Javascript擴展類

+3

Actualy ...有沒有其他的方法,但b.prototype = new a; – xpepermint 2010-02-13 00:52:21

+1

JavaScript沒有類。因此,這整個問題都沒有意義。你在談論Java嗎?還是ActionScript?那些*做*有類,但它們與JavaScript完全無關。或者你是在談論一些JavaScript庫,例如MooTools,它在JavaScript中實現基於類的OO?在這種情況下,答案取決於你在說什麼圖書館。 – 2010-02-13 01:03:12

+0

有我的類對象:https://github.com/reduardo7/sjsClass/blob/master/sjsclass.js – 2013-09-13 21:01:51

回答

27

道格拉斯Crockford的具有繼承在JavaScript中一些很好的解釋:

  1. prototypal inheritance:「自然」的方式做事情在JavaScript
  2. classical inheritance:靠近你在大多數面嚮對象語言查找,但那種對運行的JavaScript
1
extend = function(destination, source) { 
      for (var property in source) { 
      destination[property] = source[property]; 
      } 
      return destination; 
    }; 

Extending JavaScript

您也可以將過濾器添加到for循環中。

+8

這不是什麼OP問,也不正確的「擴展」 - 你應該遍歷Object.keys或至少檢查hasOwnProperty – 2013-08-30 20:39:23

+0

需要hasOwnProperty檢查並覆蓋方法和屬性(如果它們相同),而無法稍後調用超類方法。 – 2014-04-07 14:35:57