[英]How to access function inside function without outer returning inner one
我有一个函数“ alpha”,里面还有另一个函数“ beta”。 如果我不返回alpha测试版,那么如何访问beta。 反正有这样做吗? (就像,我可以访问alpha编写window.alpha(),因为在全局上下文中alpha成为窗口对象的属性,然后如何通过窗口dom树将beta作为属性访问)?
<html> <head></head> <body> <script> function alpha() { console.log("hi"); function beta() { console.log("hello"); } } alpha(); //works window.alpha(); //works beta(); //it is directly not accessible. How to access it if alpha does not return it </script> </body> </html>
alpha()在Window Dom中,但为什么不是beta? (即使不在alpha内)
通常,您不能执行此操作,或者您更喜欢这些选项,但是在这些操作中,您必须调用一次alpha
才能获得beta
//第一个选项
(function alpha() {
console.log("hi");
function beta() {
console.log("hello");
}
window.beta = beta;
})()
//第二个选项
使用this
来创建beta
作为alpha
属性
function alpha() {
this.beta = function() {
console.log("hello");
}
}
let alphaObject = new alpha();
alphaObject.beta();
如果您不想返回beta
,则可以返回this
并将beta
定义为this.beta
:
要访问beta()
,您只需要调用alpha().beta()
。
function alpha() { console.log("hi"); this.beta = () => { console.log("hello"); } return this; } alpha().beta();
beta()方法专用于功能alpha。 Javascript范围定义的工作方式可防止您直接访问内部函数。 使用this.beta
其创建为alpha的属性
使用this
beta
声明为alpha
成员:
function alpha() { console.log("hi"); this.beta = function() { console.log("hello"); } } let a = new alpha(); a.beta();
您当前的实现阻止JavaScript从alpha
之外访问beta
。 阅读有关JavaScript中私有函数的更多信息。
使用this
方法,您实际上可以将这些方法附加到函数alpha
的实例。 这就是我在此解决方案中所做的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.