![](/img/trans.png)
[英]Inner function does not return changes to variable assigned in outer function
[英]how to call function inner function from outer one assigned to a variable
我有这个功能
var x = function outer() {
console.log('outer')
this.inner = function() {
console.log("inner");
}
}
问题是如何在此范围之外调用内部函数? 我试过x().inner()
但它不起作用
您尝试使用类型函数作为类试试这个:
class Outer {
inner () {
console.log("inner");
}
}
console.log(new Outer.inner()) //output inner
您的outer
函数不返回值。
在您的代码中发生的情况是,当您运行x()
,它将执行outer
函数,该函数将log
一些内容到控制台,声明this.inner
并退出。
您需要做的是在outer
函数的末尾返回this
。
像这样:
var x = function outer() {
console.log('outer')
this.inner = function() {
console.log("inner");
}
return this;
}
然后你可以做x().inner()
,它会完美地工作!
以你做的方式。
这个关键字指向 window 对象,所以如果你想调用内部,你可以
使用 window.inner();
但是如果你想把它用作一种方法,你必须使用 new 关键字。 new 关键字创建一个新对象并将 this 关键字关联到它,因此在我的示例中,inner 可以成为某些东西的方法。
function Outer() { console.log('outer') this.inner = function() { console.log("inner"); } } var something = new Outer(); something.inner();
我不能从外部函数返回 this,我可以从 x 变量访问内部函数吗? - Tarik Ziyad 的(OP) 评论
如果你想只执行内部函数,你可能会这样的事情,然后(或样机):
var outer = function () { this.inner = function() { return 'inner'; } return 'outer'; } outer.prototype.innerProto = function() { return 'inner-proto'; } var x = new outer; console.log(x.inner()); console.log(x.innerProto());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.