Показать сообщение отдельно
  #1 (permalink)  
Старый 23.03.2020, 21:13
Новичок на форуме
Отправить личное сообщение для rexton Посмотреть профиль Найти все сообщения от rexton
 
Регистрация: 23.03.2020
Сообщений: 3

Требуется помощь
Я новичек в программировании под JS. До этого в основном писал на С под микроконтроллеры, и не сразу получается все понять.
Собственно вопрос вот в чем. Приведу абстрактный код который у меня не работает как надо. Это часть скрипта который загружается в браузере.
//*1
function a()
{

    let selectCallback=1;
    let gFileList;

    a.prototype=
    {
        setSelectCallback: function(value)
	    {
	    	selectCallback=value;
	    }
    }

    //некоторый код который загружает ресурсы с диска используя промисы

	getFilesAndFoldersList(gCurentPath).then((res)=>
		{
			gFileList=res;
		},
		function(err)
		{
			let b=err;
		});
}
//*2
window.addEventListener("load",function() {
   let b=new a();
   b.setSelectCallback(function(a)
       {
          //do something
          let c=a;
       });
});


Собственно вопрос в том, что при первом вызове из "*2" в отладчике показывает что у переменной b в прототипе нет метода setSelectсallback. При втором вызове он есть, но когда используется внутри функции a значение selectCallback остается равно 1. Собственно почему? если я проходя по отладке вижу, что значение переменной seleckCallback в функции a меняется на нужный мне обработчик, но когда я пытаюсь использовать значение переменной изнутри функции оно всегда равно 1.

Сильно не пинайте. Возможно я в принципе неправильно все это пытаюсь сделать, но кучу интернета перерыл ответа на вопрос не нашел.

Последний раз редактировалось rexton, 23.03.2020 в 21:19.
Ответить с цитированием