Javascript: конструктор функции это ключевое слово

В чем разница между следующими двумя сегментами кода:

function HelloService(){
  var service = this;
  service.itemList = []

  service.hello = function(){    
    return "Hello World!!";
  };

  service.addItem = function(){
    service.itemList.push(1);
  }
}

function HelloService(){
  var service = this;
  var itemList = [];

  var hello = function(){    
    return "Hello World!!";
  };

  service.addItem = function(){
    itemList.push(1);
  }

}

Потому что, насколько я понимаю, this внутри функции hello и снаружи функция hello указывает на один и тот же экземпляр.

Может ли кто-нибудь объяснить вышеупомянутую проблему в отношении JAVA?

РЕДАКТИРОВАТЬ: я добавил addItem функция. Здесь я не понимаю разницу между service.itemList а также var itemList внутри addItem function, Не могли бы вы объяснить разницу внутри этой функции?

1 ответ

Локальные переменные в функциях Javascript не добавляются как свойства this, Первый эквивалентен:

function HelloService(){
  this.hello = function(){    
    return "Hello World!!";
  };
}

Но нет:

function HelloService(){
  var hello = function(){    
    return "Hello World!!";
  };
}

Который ничего не делает, так как функция, на которую ссылается hello никогда не используется и не доступен вне области HelloService.

Другие вопросы по тегам