Информация об изменениях

Сообщение Re: Объявление функций в яваскрипт от 12.07.2019 10:04

Изменено 12.07.2019 10:14 GarryIV

Re: Объявление функций в яваскрипт
Здравствуйте, dmitritch, Вы писали:

D>Подскажите пожалуйста, вот это вот что за хитромудрое объявление функции такое:


D>
D>const addSVGElementFromJson = this.addSVGElementFromJson = function (data) {
D>


D>и что оно дает в сравнении с простым:


D>
D>function addSVGElementFromJson(data) {
D>


Это обычно делалось для кода типа
function Ctor() {
  const elements = [];
  // function addSVGElementFromJson(data) { не будет доступна снаружи
  const addSVGElementFromJson = this.addSVGElementFromJson = function (data) {
    elements.push(data);
    console.info(`elements.length=${elements.length}`);
  }
  this.anotherFunction = function () {
    // this.addSVGElementFromJson({svg:1}); работать не будет
    addSVGElementFromJson({svg:1});
  }
}
obj = new Ctor();
obj.addSVGElementFromJson({svg:2});
setTimeout(obj.anotherFunction, 10);
Re: Объявление функций в яваскрипт
Здравствуйте, dmitritch, Вы писали:

D>Подскажите пожалуйста, вот это вот что за хитромудрое объявление функции такое:


D>
D>const addSVGElementFromJson = this.addSVGElementFromJson = function (data) {
D>


D>и что оно дает в сравнении с простым:


D>
D>function addSVGElementFromJson(data) {
D>


Это обычно делалось для кода типа
function Ctor() {
  const elements = [];
  // function addSVGElementFromJson(data) { не будет доступна снаружи
  const addSVGElementFromJson = this.addSVGElementFromJson = function (data) {
    elements.push(data);
    console.info(`elements.length=${elements.length}`);
  }
  this.anotherFunction = function () {
    // this.addSVGElementFromJson({svg:1}); работать не будет
    addSVGElementFromJson({svg:1});
  }
}
obj = new Ctor();
obj.addSVGElementFromJson({svg:2});
setTimeout(obj.anotherFunction, 10);

это аналогично (с поправкой не видимость о которой писал vsb).
function Ctor() {
  const elements = [];
  function addSVGElementFromJson (data) {
    elements.push(data);
    console.info(`elements.length=${elements.length}`);
  }
  this.addSVGElementFromJson = addSVGElementFromJson;
  this.anotherFunction = function () {
    addSVGElementFromJson({svg:1});
  }
}
const obj = new Ctor();
obj.addSVGElementFromJson({svg:2});
setTimeout(obj.anotherFunction, 10);