开发者问题收集

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

2017-05-20
56

我有以下代码,但它一直抛出“未捕获类型错误:无法读取未定义的属性‘nineAM’”

通常在 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 点。

3个回答

如果您希望将 GetHour 用作 构造函数 (类似于类),则应如下所示:

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

使用方式如下:

new GetHour().nineAM();

或者,如果您使用 ES2015 或更高版本,则可以使用 进行定义:

class GetHour {
    nineAM() {
        document.getElementById("hour").selectedIndex = "09";
    }
}
new GetHour().nineAM();
Saravana
2017-05-20

您需要从函数返回,例如

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
    }
}
baao
2017-05-20

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

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

class getHour{
   nineAM () {
       document.getElementById("hour").selectedIndex = "09";
    }

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

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

}

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

let gh = new getHour();
gh.nineAM();
DesTroy
2017-05-20