我想重寫一個Javascript函數,包含在.js文件,我不能修改(它是從服務器我們的應用程序沒有部署)。該函數包含其中的函數和變量。有一個子函數需要改變行爲,但是被另一個調用,我不能直接調用它。那就是:遇到問題擴展Javascript函數與更多的功能
包含的文件過於簡單的版本,我不能改變:
com.company.topLevelFunc = function() {
var a = null;
var b = null;
var doSomething = function() {
a = foo;
b = bar;
};
var get = function(cfg) {
//do stuff
};
return {
//other vars and functions here
getValue : function (cfg) {
cfg.url=a + b;
get(cfg);
}
};
}();
我需要重寫的功能是GET(CFG)。但是,我不能直接調用它,我需要通過getValue(cfg)方法並保留頂層函數中所有其他內容。所以我一直在試圖覆蓋兩個如下:
我的JS,我完全控制,並沒有工作,它的錯誤申請說'缺少:屬性ID後「。我這樣做是正確的,不知道如何從一些非常聰明的適用於正常工作?
var topLevel = com.company.topLevelFunc;
myTopLevel = function() {
var myGet = function(cfg) {
//do simliar but different stuff from the original get function
};
return {
topLevel.apply(this, arguments);
getMyValue : function (cfg) {
cfg.c= a + b +"some other string";
//do something
myGet(cfg);
}
};
}();
'我在做這件事嗎?'你有沒有試圖檢查你的結果,以發現一些明顯的語法錯誤,比如第一個例子中的extra()和第二個中的apply調用? – Tibos
我在第一個例子中刪除了(),這是一個輸入到這個論壇的錯字,謝謝。我沒有得到任何其他語法錯誤,只是在應用調用中出現「丟失:在屬性列表之後」的錯誤。我不知道爲什麼,也許我不明白申請是如何運作的,並且沒有正確地使用它或在正確的地方使用它。我的意圖是讓原來的頂級功能進入相同的狀態,就像我調用getValue而不是getMyValue一樣。 – user3034229