[英]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.