как обратиться к вложенной функции?

312
20 сентября 2017, 14:17
function asdf() {
    function dsa() {
        alert(123);
    }
}

как обратиться к функции dsa?

Answer 1

Любая функция (включая "стрелочные") создает свой scope (область видимости). Поэтому, ровно как извне функции asdf() нельзя обратиться к переменным, объявленным внутри этой функции, так нельзя и к другим функциям, объявленным внутри этой.

Однако, если внешняя функция возвращает вложенную, то обратиться к ней не составит труда:

function asdf() {
    return function asd() {
    }
}
asdf()();
Answer 2

Гулять - так гулять.

function asdf() { 
  function dsa() { 
    console.log('from dsa: 123'); 
  } 
  console.log('from adsf: old code'); 
} 
 
var strAsdf = asdf.toString(); 
var startIndex = strAsdf.indexOf("{"); 
var strAsdf = strAsdf.substring(0, startIndex + 1) + 
  "if (arguments[0] === 'getMeDsa') return dsa;" + 
  strAsdf.substring(startIndex + 1); 
eval(strAsdf); 
 
asdf('getMeDsa')(); 
asdf();

Answer 3

Как вариант, но подойдёт ли он в вашем случае, не знаю.

function asdf() {
  this.dsa = function() {
    alert(123);
  }
}
 let Asdf = new asdf();
 Asdf.dsa();
READ ALSO
Пояснить отрывок кода на javascript

Пояснить отрывок кода на javascript

Прошу пояснить словами что в нем происходит, соответственно для дальнейшего обучения

321
Как обновить стиль span'а при смене данных на ajax?

Как обновить стиль span'а при смене данных на ajax?

Есть 5 значений, хранящихся в db - ratecount1, ratecount2, ratecount3, ratecount4, ratecount5На основе этих значений выводится процентное соотношение каждого из значений

277
barba js - как сделать наложение переходов

barba js - как сделать наложение переходов

Как реализовать наложение переходов в плагине barba js? В примерах на оф сайте, только когда один исчезает, а второй проявляется, а мне нужно что...

303
Добавить класс по условию VUE.JS

Добавить класс по условию VUE.JS

Хочется сделать красиво, придерживаясь логики VUEJS

475