Тут через функцию создал объект со скрытой от внешнего доступа переменной и методом для работы с этой переменной:
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();
В литерале объекта поля описываются в следующем формате:
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());
Первое что приходит на ум, помять свойство defineProperties
Либо дать доступ только по уникальной ссылке через es6 symbol
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости