jQuery JavaScript子类化和属性
我实现了一个类(我称之为RowsEditor)及其子类(我称之为DateRowsEditor),jQuery代码如下:jQuery JavaScript子类化和属性,javascript,jquery,oop,inheritance,Javascript,Jquery,Oop,Inheritance,我实现了一个类(我称之为RowsEditor)及其子类(我称之为DateRowsEditor),jQuery代码如下: function create_RowsEditor(tableId) { var rowsEditor = { tableId: tableId, quit_row: function(ctl) { /*...*/ } }; $('#'+tableId).click(function(event) { var tr = event.dele
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()类型的对象:
问题在于,在用户单击“退出”时,调用的对象是create_RowsEditor()创建的对象,而不是create_DateRowsEditor()创建的派生对象
如何以结构化和面向对象的方式正确执行此操作?我通过添加.init()方法解决了此问题: 并创建如下对象:
/*var rowsEditor =*/ create_ComeEditor('come').init();
这是解决我的问题的正确方法,因为这种方法只在应该调用事件处理程序时才调用它的初始化
问题在于,在用户单击quit_row()时,派生对象没有调用它
那就不要使用extend
。只需创建对象,并覆盖其quit\u行
方法:
function create_DateRowsEditor(tableId) {
var rowsEditor = create_RowsEditor(tableId);
rowsEditor.quit_row = function(ctl) { /*...*/ };
return rowsEditor;
}
/*var rowsEditor =*/ create_ComeEditor('come').init();
function create_DateRowsEditor(tableId) {
var rowsEditor = create_RowsEditor(tableId);
rowsEditor.quit_row = function(ctl) { /*...*/ };
return rowsEditor;
}