如何在函数中调用函数而不将任何变量传递给函数Javascript

如何在函数中调用函数而不将任何变量传递给函数Javascript,javascript,function,Javascript,Function,我有以下代码,但它不断抛出一个“uncaughttypeerror:cannotreadproperty'nineAM'of undefined” 通常在OOP中,我会声明一个类,然后在类中有单独的方法。我想用JS做类似的事情,但不太确定这是否可行 function SetBtnToEcr () { document.getElementById("depart").value = "Test 1"; document.getElementById("arrive").value

我有以下代码,但它不断抛出一个“uncaughttypeerror:cannotreadproperty'nineAM'of undefined”

通常在OOP中,我会声明一个类,然后在类中有单独的方法。我想用JS做类似的事情,但不太确定这是否可行

function SetBtnToEcr () {
    document.getElementById("depart").value = "Test 1";
    document.getElementById("arrive").value = "Test2";

    GetTodaysDate();
    new (GetHour()).nineAM();
}

function SetDeptTime () {
    SetBtnToECR();
}

function GetHour(){
    function nineAM () {
        document.getElementById("hour").selectedIndex = "09";
    }

    function fiveThirtyPM(){
        document.getElementById("hour").selectedIndex = "17";
        document.getElementById("minute").selectedIndex = "30";
    }

    function twoFifteenPM(){
        document.getElementById("hour").selectedIndex = "14";
        document.getElementById("minute").selectedIndex = "15";
    }
}

我在网上查看过,但在所有其他示例中,我都看到参数被传递到方法中,或者只传递给返回字符串的方法,然后使用this.methodName返回所需的字符串。但是,我不想返回任何内容,我只想将小时设置为上午9点。

如果您打算将
GetHour
设置为一个(类似于一个类),则应该如下所示:

function GetHour(){
    this.nineAM = function () {
        document.getElementById("hour").selectedIndex = "09";
    }
    // ...
}
用起来像:

new GetHour().nineAM();
或者,如果您使用ES2015或更高版本,您可以使用:


如果您希望
GetHour
成为一个(类似于一个类),它应该如下所示:

function GetHour(){
    this.nineAM = function () {
        document.getElementById("hour").selectedIndex = "09";
    }
    // ...
}
用起来像:

new GetHour().nineAM();
或者,如果您使用ES2015或更高版本,您可以使用:


您需要从函数返回,例如

function GetHour(){
    function nineAM () {
        document.getElementById("hour").selectedIndex = "09";
    }

    function fiveThirtyPM(){
        document.getElementById("hour").selectedIndex = "17";
        document.getElementById("minute").selectedIndex = "30";
    }

    function twoFifteenPM(){
        document.getElementById("hour").selectedIndex = "14";
        document.getElementById("minute").selectedIndex = "15";
    }

    return {
      nineAM,
      fiveThirtyPM,
      twoFifteenPM
    }
}

您需要从函数返回,例如

function GetHour(){
    function nineAM () {
        document.getElementById("hour").selectedIndex = "09";
    }

    function fiveThirtyPM(){
        document.getElementById("hour").selectedIndex = "17";
        document.getElementById("minute").selectedIndex = "30";
    }

    function twoFifteenPM(){
        document.getElementById("hour").selectedIndex = "14";
        document.getElementById("minute").selectedIndex = "15";
    }

    return {
      nineAM,
      fiveThirtyPM,
      twoFifteenPM
    }
}

您可以使用构造函数,使用
this
关键字定义公共属性和方法,并使用
new
关键字创建实例

从ES2015开始,您可以使用熟悉的OOP类型

然后从getHour类的实例访问这些方法

let gh = new getHour();
gh.nineAM();

您可以使用构造函数,使用
this
关键字定义公共属性和方法,并使用
new
关键字创建实例

从ES2015开始,您可以使用熟悉的OOP类型

然后从getHour类的实例访问这些方法

let gh = new getHour();
gh.nineAM();

在开始这条路之前,最好阅读Eric Elliot(vert固执己见)关于JavaScript中构造函数、类和工厂的讨论


@baao的回答描述了如何使用工厂实现您的目标。正如埃里克在文章中所说,工厂是最简单的解决方案。绝对值得一看。

在开始这条路之前,最好先阅读Eric Elliot(vert Opinistrated)关于JavaScript中构造函数、类和工厂的讨论


@baao的回答描述了如何使用工厂实现您的目标。正如埃里克在文章中所说,工厂是最简单的解决方案。绝对值得一看。

GetHour
函数不返回任何内容。。。也许您想要类似于
return{nineAM:nineAM,fiveThirtyPM:fiveThirtyPM,twoFifteenPM:twoFifteenPM}
GetHour
函数的末尾
GetHour
函数不返回任何内容。。。也许您想要类似于
return{nineAM:nineAM,fiveThirtyPM:fiveThirtyPM,twoFifteenPM:twoFifteenPM}
GetHour
functionPerfect的末尾!非常感谢!谢谢