是否可以覆盖缩小的Javascript文件中包含的函数?
详细说明: 我试图覆盖Twitter Boootstrap Typeahead插件(v2.3.2)中的process()函数,以便在下拉列表底部添加指示符,如果返回的项目超出显示的项目。
这是我的代码:
var customProcess = function (items) {
var that = this
items = $.grep(items, function (item) {
return that.matcher(item)
})
items = this.sorter(items)
if (!items.length) {
return this.shown ? this.hide() : this
}
//Get the default item slice and determine whether the indicator is needed
var itemSlice = items.slice(0, this.options.items);
if (items.length > this.options.items) {
itemSlice.push("...");
}
return this.render(itemSlice).show();
};
// Reassign the typeahead.process() function to the customized
// version that adds a visual indicator if more items are
// returned than the amount shown (options.items).
$.fn.typeahead.Constructor.prototype.process = customProcess;
如果我使用的是Bootstrap JavaScript(bootstrap.min.js)的缩小版本,则会失败并实际上完全杀死预先输入功能。如果我改为使用非缩小版本(bootstrap.js),它可以完美地工作。
[作为旁注,我以前使用与旧版本的typeahead插件相同的方法(我相信v1.8.x),它也与最小化版本完美配合。我幸运了吗?]
答案 0 :(得分:1)
缩小不会更改“可见”API。如果你可以在缩小的库上调用一个函数作为library.functionName(...),那么你可以覆盖该属性并将其转换为其他属性(请注意,函数只是一个被添加到执行运算符()调用的属性它)。
有一点需要注意:如果使用Object.defineProperty
设置了该功能,则使用默认configurable
和/或writable
配置选项(或将这些值明确设置为false
),然后它将被“锁定”而不被修改(它将不会被删除和/或分配)。