Javascript 如何在内部使用变量

Javascript 如何在内部使用变量,javascript,ecmascript-6,fullcalendar-4,Javascript,Ecmascript 6,Fullcalendar 4,我想在内部使用变量,我看到其他人也这么做,但为什么它对我不起作用 这是我的ES6文件 // Setup module // ------------------------------ var FullCalendarAdmin = function () { // // Setup module components // var _componentRender = function () { // Basic calendar var

我想在内部使用变量,我看到其他人也这么做,但为什么它对我不起作用

这是我的ES6文件

// Setup module
// ------------------------------

var FullCalendarAdmin = function () {

    //
    // Setup module components
    //
    var _componentRender = function () {

    // Basic calendar
    var _componentFullCalendarAdmin = function (events) {

        // Define element
        var calendarAgendaViewElement = document.querySelector('.fullcalendar-agenda-admin');

        // Initialize
        if (calendarAgendaViewElement) {
            var calendarAgendaViewInit = new FullCalendar.Calendar(calendarAgendaViewElement, {
                plugins: ['dayGrid', 'timeGrid', 'interaction'],
                select: function (start, end) {
                    var title = prompt("Add event:");
                    var data;
                    if (title != '') {
                        data = {
                            title: title,
                            start: start,
                            end: end
                        };
                        calendarAgendaViewInit.addEvent(data);
                    }
            }).render();

        }
    };

    //
    // Return objects assigned to module
    //

    return {
        init: function () {
            _componentRender();
        }
    }
}();


// Initialize module
// ------------------------------

document.addEventListener('DOMContentLoaded', function () {
    FullCalendarAdmin.init();
});
如何使用
CalendarAgendaWinit
调用
addEvent
函数,而不将函数作为未定义的错误获取


提前谢谢

问题是您需要立即调用
.render

因此,您的
CalendarAgendaWinit
不是
FullCalendar.Calendar
的实例,而是
render
方法的结果。
您可以做的是首先定义
CalendarAgendaWinit
变量

var calendargendaviewinit=new FullCalendar.Calendar(calendarAgendaViewElement{
插件:['dayGrid','timeGrid','interaction'],
选择:功能(开始、结束){
变量标题=提示(“添加事件:”);
var数据;
如果(标题!=''){
数据={
标题:标题,,
开始:开始,
完:完
};
日历代理daviewinit.addEvent(数据);
}
});

然后调用
calendarAgendaViewInit.render()

问题是您立即调用
.render

因此,您的
CalendarAgendaWinit
不是
FullCalendar.Calendar
的实例,而是
render
方法的结果。
您可以做的是首先定义
CalendarAgendaWinit
变量

var calendargendaviewinit=new FullCalendar.Calendar(calendarAgendaViewElement{
插件:['dayGrid','timeGrid','interaction'],
选择:功能(开始、结束){
变量标题=提示(“添加事件:”);
var数据;
如果(标题!=''){
数据={
标题:标题,,
开始:开始,
完:完
};
日历代理daviewinit.addEvent(数据);
}
});

然后调用
calendargendaviewinit.render()

这是对上述注释的一种扩展解释。看起来
calendarAgendaViewElement
只是一个DOM元素,您已经找到并分配给了一个变量。这里的问题是,您只能在类实例化上调用方法,而这些类实例化现在是包含方法的对象。如果您看到其他人调用
 addEvent
就像这样,然后他们很可能在类的实例化上调用它,这意味着
addEvent
以前已经声明为该类的一部分,他们只是调用该方法

参见下面的示例

如果我声明一个类如下:


class Sample {
   sayHello(){
      console.log('hello')
    }
 }

然后实例化“Sample”类的新对象:

var sampleClass = new Sample()

然后我可以通过引用对象内部的方法来调用“sayHello”

sampleClass.sayHello()//你好


希望对您有所帮助

这是对上述注释的一种扩展解释。看起来,
calendarAgendaViewElement
只是一个DOM元素,您已经找到并分配给了一个变量。这里的问题是,您只能在类实例化上调用方法,这些类实例化现在是包含方法的对象。如果您看到其他的像这样调用
addEvent
,然后他们很可能在类的实例化上调用它,这意味着
addEvent
以前已声明为该类的一部分,他们只是调用该方法

参见下面的示例

如果我声明一个类如下:


class Sample {
   sayHello(){
      console.log('hello')
    }
 }

然后实例化“Sample”类的新对象:

var sampleClass = new Sample()

然后我可以通过引用对象内部的方法来调用“sayHello”

sampleClass.sayHello()//你好


希望这对您有所帮助

如果您在函数中声明“函数本身”,那么您尝试编写的是对象类:。谢谢!查看它如果您在函数中声明“函数本身”,那么您尝试编写的是对象类:。谢谢!查看它