无法在另一个函数内调用函数

时间:2017-08-13 03:29:59

标签: javascript function this

我有这段代码:

function myFunction() {

  console.log("Something")

  this.somethingElse = event => console.log("Something else")

}

当我使用myFunction()唤起功能时,我在控制台中打印出 Something 。但唤起myFunction.somethingElse()会引发错误,说myFunction.somethingElse()不是函数。

我出错了什么?

3 个答案:

答案 0 :(得分:1)

您可以return this,然后使用函数调用的返回值调用函数,可选地在函数调用之前使用new关键字

function myFunction() {

  console.log("Something")

  this.somethingElse = event => console.log("Something else")
  return this
}

var fn = new myFunction();
fn.somethingElse();

答案 1 :(得分:0)

在Javascript中,函数中的this是调用函数的上下文。换句话说,是调用函数的对象。

在您的情况下,当您执行myFunction()时,您实际上是在呼叫window.myFunction()。因此this变为window

因此,您的功能将打印控制台 - Something。 它会在somethingElse中添加window。 因此,如果您尝试访问myFunction().somethingElse是错误的,因为somethingElse不属于您的功能。

但如果您尝试执行myFunction()然后somethingElse,它将在控制台中打印 - Something else



function myFunction() {

  console.log("Something")

  this.somethingElse = event => console.log("Something else")

}

myFunction();

somethingElse()




答案 2 :(得分:0)

我通过将它作为对象属性的值(即JavaScript中的'方法')返回来调用此内部函数,如下所示:

function myFunction() {

  console.log("Something")

  return {
    somethingElse: function() {
      console.log("Something else");
    }
  }
}

myFunction().somethingElse()