我有这段代码:
function myFunction() {
console.log("Something")
this.somethingElse = event => console.log("Something else")
}
当我使用myFunction()
唤起功能时,我在控制台中打印出 Something 。但唤起myFunction.somethingElse()
会引发错误,说myFunction.somethingElse()
不是函数。
我出错了什么?
答案 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()