gpt4 book ai didi

javascript - 覆盖另一个脚本中的 fullcalendar javascript 函数

转载 作者:行者123 更新时间:2023-11-28 15:13:43 24 4
gpt4 key购买 nike

我是js新手,我想覆盖/覆盖一些fullcalendar来自另一个脚本(my-fullcalendar.js)的函数可以为我自己进行一些更改。例如函数名称是:

formatRange and oldMomentFormat.

formatRange 可以从 this.$.fullCalendar.formatRange 访问,但 oldMomentFormat 不能通过这种链访问。但即使我在 my-fullcalendar.js 中执行类似的操作:

;(function () {
function MyformatRange(date1, date2, formatStr, separator, isRTL) {
console.log( "MyformatRange");
//other parts is exactly the same
// ...
}
this.$.fullCalendar.formatRange=MyformatRange;
console.log(this);
})();

没有任何反应,因为没有生成日志,甚至逐行跟踪也没有从这里通过。但是当在控制台日志中观察“this”时,MyformatRange 被原始 formatRange 替换。另一个问题是我如何覆盖/覆盖不在窗口层次结构中的 oldMomentFormat 函数来访问(或者我找不到它)??

最佳答案

好吧,让我们简化问题。本质上,你有这样的情况:

var makeFunObject = function () {
var doSomething = function (msg) {
console.log(msg);
};

var haveFun = function () {
doSomething( "fun!");
};

return {
doSomething : doSomething,
haveFun : haveFun
};
};

换句话说,你有一个正在创建闭包的函数。该闭包内部有两个“私有(private)”函数,其中一个调用另一个。但这两个函数似乎都在返回的对象中“公开”。

你编写一些代码:

var myFunObject = makeFunObject();
myFunObject.haveFun(); // fun!

是的,看起来效果很好。现在,让我们替换返回对象中的doSomething函数,并再次调用haveFun:

myFunObject.doSomething = function (msg) {
console.log("My new function: " + msg);
};
myFunObject.haveFun(); // fun! <== wait what?

但是等等!新的替换函数没有被调用!没错:haveFun 函数是专门为调用内部函数而编写的。事实上,它根本不知道对象中公开的函数。

那是因为你无法以这种方式替换内部的私有(private)函数(事实上,你根本无法替换它,除非不改变原始代码)。

现在回到 FullCalendar 代码:您正在替换对象中的外部函数,但内部函数是由 FullCalendar 内的所有其他函数调用的函数。

关于javascript - 覆盖另一个脚本中的 fullcalendar javascript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35095562/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com