我想重寫正在由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