我想重写正在由JavaScript插件创建的函数。我知道如何覆盖常规的窗口函数,但这是不同的。我不知道如何命名它,但该功能的结构是这样的:重写JavaScript(窗口)函数
window.something.function
我不知道如何重写。我试过以下内容:
var originalFunction = window.something.function;
window.something.function = function(parameter) {
alert('called');
return originalFunction(parameter);
}
但它不工作。
有人知道解决方案吗?
编辑: 正如我被告知我的问题不清楚,我已经使用插件的实际名称再次编辑它。
该插件是指被用作:当该正在使用
var myColor = new jscolor(target, options)
,有一个功能“内部”对象“jscolor”设定目标元素的值时,其将被调用。我想覆盖该功能来添加一个额外的功能,而无需更改原始的js文件。
代码:
if (!window.jscolor) { window.jscolor = (function() {
var jsc = {
.....
jscolor : function (targetElement, options) {
....
//Function I want to change:
this.exportColor = function (flags) {
if (!(flags & jsc.leaveValue) && this.valueElement) {
var value = this.toString();
if (this.uppercase) { value = value.toUpperCase(); }
if (this.hash) { value = '#' + value; }
if (jsc.isElementType(this.valueElement, 'input')) {
this.valueElement.value = value;
} else {
this.valueElement.innerHTML = value;
}
}
}
}
};
我尝试至今:
var origJsColor = jscolor.exportColor;
jscolor.exportColor = function(flags) {
console.log('called');
return origJsColor(flags);
}
和窗口上方的尝试。
你可以尝试运行'window.something.function()'立即在你的函数定义之后,看你定义的函数是否被实现。 –
我更新了我的问题。 @JimmyKo感谢您的回复。我的函数被调用(这是显而易见的),但我得到的错误“originalFunction”不是一个函数。 – stefan1294
@ T.J.Crowder道歉。我希望现在更清楚。 – stefan1294