@LoranDeMarcus

Как добавить в массив новой функции объекты из старой функции JS?

столкнулся с проблемой. Необходимо из функции Tools передать один из item'ов в массив Bag функции Equipment.

function Equipment() {
  const Bag = [];

  function addTools() {
    for (var i=0; i < tools; i++) {
      Bag.push(tools.item1)
    }
  }
}

function tools() {
    this.item1 = {
      name: "item1",
      price: 5,
      count: 10
    };
    this.item2 = {
      name: "item2",
      price: 15,
      count: 20
    };
    this.item3 = {
      name: "item3",
      price: 20,
      count: 30
    };
    this.item4 = {
      name: "item4",
      price: 30,
      count: 40
    };
    this.item5 = {
      name: "item5",
      price: 40,
      count: 50
    };
}
const equipment = new Equipment();
const tools = new Tools();
equipment.addTools(tools)
  • Вопрос задан
  • 68 просмотров
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Примерно так
function Equipment() {
  var Bag = [];

  this.addTool = function(tool) {
    Bag.push(tool);
    console.log("Added.  Bag:", Bag);
  }
}

function Tools() {
  this.item1 = {
    name: "item1",
    price: 5,
    count: 10
  };
  this.item2 = {
    name: "item2",
    price: 15,
    count: 20
  };
  this.item3 = {
    name: "item3",
    price: 20,
    count: 30
  };
  this.item4 = {
    name: "item4",
    price: 30,
    count: 40
  };
  this.item5 = {
    name: "item5",
    price: 40,
    count: 50
  };
}

var equipment = new Equipment();
var tools = new Tools();
equipment.addTool(tools.item1); //
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@RidgeA
addTools - храниться в замыкании Equipment и ее нельзя вызвать извне.
что бы это сделать (вызвать извне) надо сделать функцию "публичной".

И этот код вообще не должен работать.
Ответ написан
Комментировать
KorniloFF
@KorniloFF Куратор тега JavaScript
Работаю по font-end / JS
function Equipment() {
  const Bag = [];

  function addTools() {
    for (var i=0; i < tools; i++) {
      Bag.push(tools.item1)
    }
Object.assign(Bag, new tools);
console.log('=== ', Bag.item2)
  }
addTools()
}

function tools() {
    this.item1 = {
      name: "item1",
      price: 5,
      count: 10
    };
    this.item2 = {
      name: "item2",
      price: 15,
      count: 20
    };
    this.item3 = {
      name: "item3",
      price: 20,
      count: 30
    };
    this.item4 = {
      name: "item4",
      price: 30,
      count: 40
    };
    this.item5 = {
      name: "item5",
      price: 40,
      count: 50
    };
}

Equipment();
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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