Как вызвать определенную функцию изнутри подфункции в javascript?

#javascript #function

Вопрос:

Как я могу вызвать функцию «a» из «a.v» без прямой ссылки «a()»

 function a(){
    alert("1");
    this.v=function(){alert("hi")};
}
 

Комментарии:

1. Как вы вызываете функцию, не вызывая ее?

Ответ №1:

Один из способов, которым я могу придумать, чтобы сделать это, не повторяя a :

 function a(){
    let indirect = arguments.callee;
    alert("1");
    indirect.v=function(){ indirect(); };
}

a();
a.v();
 

Но это не работает в строгом режиме, и вы должны позвонить a , прежде чем звонить a.v .

Вы также могли бы сделать:

 function a(){
   alert('1');
   this.v = () => this();
}

a.v = a;
a.v();
 

Таким образом, вы не звоните a() , и он также работает в строгом режиме.

Ответ №2:

Установите его v свойство вне функции:

 function a() {
  alert("1");

}

a.v = function() {
  a()
  alert("hi")
};

a.v()