我有一个功能' alpha'还有另一个功能' beta'在里面。如果我没有在alpha中返回beta,那么如何访问beta版。无论如何这样做? (比如,我可以访问alpha编写window.alpha(),因为在全局上下文中alpha成为window对象的属性,然后如何通过window dom tree访问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>
&#13;
alpha()在Window Dom中,但为什么不测试? (甚至不在alpha内)
答案 0 :(得分:3)
通常你不能做这件事,你可以选择这些选项,但在这些选项中,你必须拨打alpha
一次才能获得测试版
//第一个选项
(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();
答案 1 :(得分:2)
如果您不想返回beta
,则可以返回this
并将beta
定义为this.beta
:
要访问beta()
,您只需致电alpha().beta()
function alpha() {
console.log("hi");
this.beta = () => {
console.log("hello");
}
return this;
}
alpha().beta();
&#13;
答案 2 :(得分:2)
beta()方法是函数alpha的私有方法。 Javascript作用域的工作方式阻止您直接访问内部函数。使用this.beta
答案 3 :(得分:1)
使用beta
声明alpha
为this
的成员:
function alpha() {
console.log("hi");
this.beta = function() {
console.log("hello");
}
}
let a = new alpha();
a.beta();
您当前的实施会阻止JavaScript从beta
之外访问alpha
。在JavaScript中阅读有关private functions的更多信息。
使用this
,您实际上可以将此类方法附加到函数alpha
的实例。这就是我在这个解决方案中所做的。