@komino
Бархатные

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

Есть глобальный объект
const newObj = {
   param0: 0,
   params: {
      ..,
      ..,
   },
   extraparams: {
      overwriteFunction: function () {
         alert(localParam);
      }
   }
}


Свойства в extraparams должны перезаписывать свойства другого подобного объекта. Этот второй объект находится в функции.

В контексте второго объекта, есть переменная localParam, которая должна будет использоваться в переданной из первого объекта функции.

Как можно передать функцию не как ссылку, а использовать её как новосозданную?
или есть другие, более легкие (менее глупые) решения?

UPD:
Смысл в том, чтобы использовать переменные, определенные в той функции, в которой эти самые функции переопределяются.

Есть ранее описанный объект newObj.

Есть Функция
function ObjectLoading() {
let localParam = 'Alert';
const newObjx = {
extraparams:{
overwriteFunc: function () {
// ПУСТО
}
}
}

Далее, в функции есть подобие перезаписи:

for (let param in newObj['extraparams']) { // Глобальный newObj
newObjx['extraparams'][param] = newObj['extraparams'][param];
}


После перезаписи, программа должна будет выполнить функцию с этим самым localParam.
Глобально, этой переменной не существует и программа выдает ошибку.
  • Вопрос задан
  • 85 просмотров
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Можно не переменной, а свойством объекта держать это «локальное значение», и обращаться к свойству this:
const G = {
  boo: function() {
    console.log(this.x);
  },
};

function A() {
  let x = 'XXX';
  const obj = { x, extraparams: { overwriteFunc: () => {}, }, };

  // перезаписывание. Если typeof obj[prop] == 'function'
  obj.extraparams.overwriteFunc = G.boo.bind(obj);

  // вызов
  obj.extraparams.overwriteFunc();
}

A(); // 'XXX'
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы