Javascript 在另一个.js文件中扩展函数
我有一些js代码在一个文件中,我无法触摸,因为如果我这样做,我将破坏未来的核心脚本更新Javascript 在另一个.js文件中扩展函数,javascript,extend,Javascript,Extend,我有一些js代码在一个文件中,我无法触摸,因为如果我这样做,我将破坏未来的核心脚本更新 !function($, mollify) { mollify.view.MainViewFileView = function() { var that = this; this._currentFolder = false; this._currentFolderInfo = false; this._viewStyle = 0; this._selected =
!function($, mollify) {
mollify.view.MainViewFileView = function() {
var that = this;
this._currentFolder = false;
this._currentFolderInfo = false;
this._viewStyle = 0;
this._selected = [];
this._customFolderTypes = {};
this._formatters = {
byteSize : new mollify.ui.formatters.ByteSize(new mollify.ui.formatters.Number(2, false, mollify.ui.texts.get('decimalSeparator'))),
timestamp : new mollify.ui.formatters.Timestamp(mollify.ui.texts.get('shortDateTimeFormat')),
uploadSpeed : new mollify.ui.formatters.Number(1, mollify.ui.texts.get('dataRateKbps'), mollify.ui.texts.get('decimalSeparator'))
};
this._filelist = {
columns : [],
addColumn : function(c) {
that._filelist.columns[c.id] = c;
}
};
// spec
this._filelist.addColumn({
"id": "name",
"title-key": "fileListColumnTitleName",
"sort": function(i1, i2, sort, data) {
return i1.name.toLowerCase().localeCompare(i2.name.toLowerCase()) * sort;
},
"content": function(item, data) {
return item.name;
}
});...
现在,在另一个.js中,我将在第一个文件之后加载,例如,我想用另一个“列”扩展第一个文件
????
// column 2
this._filelist.addColumn({
"id": "newcolumn",
"title-key": ... etc
我如何格式化这个
谢谢您不能修改原始函数(除了用新函数替换它),但您可以做的是围绕它创建一个包装函数。比如:
mollify.view.MainViewFileViewModified = function() {
var obj = new mollify.view.MainViewFileView();
obj._filelist.addColumn(/* etc */);
return obj;
};
确保此代码在包含原始函数的代码之后执行。实际上,修改原始函数非常容易。糟糕的选择是简单地覆盖它,但更好的选择是扩展MainViewFileView的原型
mollify.view.MainViewFileView.prototype._filelist.addColumn = function({
"id": "newcolumn",
"title-key": ... etc
谢谢,我会尝试一下,但在这种情况下,我是否需要调用init这个新的“MainViewFileViewModified”来代替“MainViewFileView”?我所以,我也可以触摸这个。。。我试图实现的是一个死胡同否?您应该能够简单地调用
mollify.view.MainViewFileViewModified()
。我不知道你问题的其余部分是什么意思。另外,不清楚你是在问你是否可以添加/修改一个方法,还是只是将一个新列推送到列堆栈上,因为后者你所要做的就是调用mollify.view.MainViewFileView.\u filelist.addColumn()
是的,很抱歉,我想推一个新列。我现在检查你的代码