[英]How to reset all buttons colour back to its original and add a new specific colour when a specific button is clicked?
[英]How to “reset” an overridden Prototype method back to its original behaviour
我無法控制或刪除的腳本決定覆蓋Date.prototype.setFullYear
方法的默認行為。 這給我們的代碼嚴重依賴的幾個庫(例如date-fns
)帶來了問題。
有什么方法可以將Date.prototype.setFullYear
函數“重置”回其原始行為? 修改原型的腳本最初是否可以工作都沒關系-我不需要它,我只是不能輕易地刪除它。
更新:
導致問題的腳本是在所有頁面上加載的Jira Core 7.13.3平台上捆綁的眾多腳本之一。 它名為calendar-lib
,在平台上開發插件時會引起問題。
由於calendar-lib
是基本Jira安裝的一部分,因此我們無法控制加載順序;因為, 據我所知,有問題的腳本將始終首先加載。
就像@Jonas建議的那樣,事實證明本機方法存儲在名為Date.prototype.__msh_oldSetFullYear
的變量中,可以使用該變量Date.prototype.__msh_oldSetFullYear
的答案的全局行為。
更新17.06.19:
現在,Jira開發人員團隊已確認此問題: https : //jira.atlassian.com/browse/JRASERVER-69491
解:
正如@Jonas和@Rob在評論中指出的那樣,在應用程序的起點設置以下語句解決了該問題:
Date.prototype.setFullYear = Date.prototype.__msh_oldSetFullYear;
其中Date.prototype.__msh_oldSetFullYear
是( Date.prototype.__msh_oldSetFullYear
)由有問題的calendar-lib
代碼存儲和公開的本機實現。
在下面的評論中有很多非常好的建議,因此如果您處於類似情況,請務必檢查一下。
謝謝!
這是你可以做的
選項1-這將覆蓋全局功能。
let obj = new Date();
obj.__proto__.setFullYear = function(){
//your override code goes in here.
}
選項2-這將僅在您的本地范圍內覆蓋該方法,或者將方法覆蓋到實例化的對象范圍。
let obj = new Date();
obj.setFullYear = function(){
//your override code goes in here
}
希望這對您有用。
正如@Jonas和@Rob在原始問題的注釋中指出的那樣,在我們的應用程序的起點設置以下語句解決了該問題:
Date.prototype.setFullYear = Date.prototype.__msh_oldSetFullYear;
其中Date.prototype.__msh_oldSetFullYear
是setFullYear
的本機實現,幸運的是,該實現已通過有問題的calendar-lib
代碼通過變量存儲和公開。
原始帖子下方的評論中還有其他非常好的建議-例如創建iFrame並從那里提取它-因此,如果您處於類似情況,請務必檢查一下。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.