Как использовать объект вместо функции?

175
24 января 2018, 16:51

Тут через функцию создал объект со скрытой от внешнего доступа переменной и методом для работы с этой переменной:

function Machine() {
  var petrol = 100;
  this.getPetrol = function() {
    return petrol;
  };
  this.setPetrol = function(value) {
    petrol = value;
  };
}
var machine = new Machine();
var p = machine.getPetrol();
machine.setPetrol(5);
var newP = machine.getPetrol();
console.log(p, newP);

Теперь хотел бы записать тот же самый объект, но не через функцию, а через непосредственно объект. Помогите пожалуйста это сделать, вот моя попытка:

var Machine = {
  this.petrol = 100,
  this.getPetrol = function() {
    return petrol;
  },
  this.setPetrol = function(value) {
    petrol = value;
  }
}
var machine = new Machine();
machine.getPetrol();
Answer 1

В литерале объекта поля описываются в следующем формате:

fieldName : fieldvalue

В первом примере ты добавляешь в свой объект два поля: getPetrol, setPetrol.

Формально аналогичный объект можно записать так:

var petrol = 100;
var Machine = {
  getPetrol : function() {
    return petrol;
  },
  setPetrol : function(value) {
    petrol = value;
  }
}

var petrol = 100; 
var Machine = { 
 
  getPetrol: function() { 
    return petrol; 
  }, 
 
  setPetrol: function(value) { 
    petrol = value; 
  } 
} 
 
console.log(Machine.getPetrol());

Answer 2

Первое что приходит на ум, помять свойство defineProperties

Либо дать доступ только по уникальной ссылке через es6 symbol

READ ALSO
WebSocket push уведомление

WebSocket push уведомление

Здравствуйте, нужно реализовать WebSocket клиент-сервер, где сервер наNet и библиотека Fleck, а клиент на JavaScript в браузере

201
Добавить параметр в url

Добавить параметр в url

У меня есть фильтр http://vjachrf

171
Как реализовать увеличение картинок?

Как реализовать увеличение картинок?

Добрый вечерПомогите решить проблему

205
Взять строку с удалением PHP

Взять строку с удалением PHP

Подскажите, как взять строку с БД MYSQLПотом положить ее в переменную, затем удалить

130