2013-07-01 23 views
0

我實現類(I稱之爲RowsEditor)和它的子類(I稱之爲DateRowsEditor)與jQuery代碼類似於:jQuery的JavaScript的子類和屬性

function create_RowsEditor(tableId) { 
    var rowsEditor = { 
    tableId: tableId, 
    quit_row: function(ctl) { /*...*/ } 
    }; 
    $('#'+tableId).click(function(event) { 
    var tr = event.delegateTarget; 
    rowsEditor.quit_row(tr); 
    }); 
    return rowsEditor; 
} 

function create_DateRowsEditor(tableId) { 
    var rowsEditor = $.extend({}, create_RowsEditor(tableId), { 
    quit_row: function(ctl) { /*...*/ } 
    }; 
    return rowsEditor; 
} 

然後,我創建類型DateRowsEditor的目的():

var rowsEditor = create_DateRowsEditor('come'): 

麻煩的是,用戶的點擊quit_row()被調用,通過create_RowsEditor()創建不使用,應create_DateRowsEditor()創建的派生類對象的對象。

如何以結構化和麪向對象的方式正確地做到這一點?

var rowsEditor = { 
    tableId: tableId, 
    init: function() { 
    var self = this; 
    $('#'+tableId).handleRowsBlur(function(event) { 
     var tr = event.delegateTarget; 
     self.quit_row(tr); 
    }); 
    return this; 
    }, 
    ... 

和創建對象是這樣的::

/*var rowsEditor =*/ create_ComeEditor('come').init(); 

這是正確的方式來解決我的問題,因爲這

回答

0

我已通過添加的.init()方法解決了這個問題事件處理程序的雙向初始化僅在應該調用時才被調用。

0

麻煩的是,用戶的點擊quit_row()不與派生類對象

叫那麼就不要使用extend了點。只需創建對象,並覆蓋其quit_row方法:

function create_DateRowsEditor(tableId) { 
    var rowsEditor = create_RowsEditor(tableId); 
    rowsEditor.quit_row = function(ctl) { /*...*/ }; 
    return rowsEditor; 
}