Привязать контекст правильно JS [дубликат]

241
19 ноября 2017, 17:40

На данный вопрос уже ответили:

  • Потеря контекста вызова 5 ответов

Есть объект с кучей вложенностей. Как грамотно передать контекст объекта canvas, чтобы можно было изменить название объекта и все работало исправно

let canvas = { 
  circle: { 
    func: function(){ 
        console.log(1); 
    } 
  }, 
  physics: { 
    func: function(){ 
      // Хочу как-то передать контекст canvas, чтобы если название 
      // Объекта изменится, код не поехал 
      canvas.circle.func(); 
      // this.circle.func(); // Не работает 
    } 
  } 
} 
canvas.physics.func();

Answer 1

function createCanvas(aValue) { 
  let result = { 
    value: aValue,   
    circle: { 
      func: function() { 
        console.log(this.canvas.value); 
      } 
    }, 
    physics: { 
      func: function() { 
        this.canvas.circle.func(); // работает 
      } 
    } 
  }; 
  result.circle.canvas = result; 
  result.physics.canvas = result; 
 
  return result; 
} 
 
let shmanvas = createCanvas(5); 
let anvas = createCanvas(123); 
 
anvas.physics.func(); 
shmanvas.physics.func();

READ ALSO
Сохранение и чтение из хранилища сессий

Сохранение и чтение из хранилища сессий

Не могу понять, где и в чём ошибкаХочу сохранить в сессию страницы нажатые кнопки фильтров, чтобы после перезагрузки страницы и т

497
Tabs внутри slick slider

Tabs внутри slick slider

Есть вот такой простой скрипт для tabs, по клику разворачивает и сворачивает текстРаботает хорошо, но проблема когда вставляю этот таб в slick slider

359
Как реализовать парсер для инстаграма

Как реализовать парсер для инстаграма

Мне нужно получить информацию о местонахождениях каждого города в определенной стране Пример: у меня есть эта ссылка Локация Эта ссылка...

302
JavaScript, не умножается с дробью?

JavaScript, не умножается с дробью?

Привет, есть простой калькулятор на javascriptОн берет значения из введенных input'ов и умножает

398