Есть объект:
var Auth = {
submit_counter: 0,
$login_field: "",
$passwd_field: "",
Submit: function()
{
//do some stuff
}
}
Хотелось бы (и где-то видел, в каких-то плагинах, нагуглить к сожалению не удалось) инициализировать свойства более красиво, грамотно и лаконично, нежели каждый раз писать Auth.$login_field = ..., Auth.$passwd_field = ...
и т.п.
Должно же быть какое-то решение, вроде такого
Auth({
$login_field: "var",
$passwd_field: "var"
});
Пробовал через создание экземпляра объекта new
, но возникает ошибка:
TypeError: Object is not a constructor (evaluating 'new Auth')
Подскажите, как правильно?
То что вы ищите - это Object.assign()
var object = {};
Object.assign(object, {
$login_field: "var",
$passwd_field: "var"
})
console.log(object)
Так же есть Object.defineProperties()
,
им можно определить не только значения самих свойств но настраивать их поведение
var object = {};
Object.defineProperties(object, {
'$login_field': {
value: "var",
writable: true,
enumerable: true
},
'$passwd_field': {
value: "var",
writable: false,
enumerable: true
}
});
object['$login_field'] = "val"
object['$passwd_field'] = "val"
console.log(JSON.stringify(object))
Цитата из MDN о значении свойств второго аргумента props
:
configurable
Равен true только в том случае, если тип этого дескриптора свойства может быть изменён и если свойство может быть удалено из содержащего его объекта. Значение по умолчанию установлено в false.
enumerable
Равен true только в том случае, если это свойство можно увидеть через перечисление свойств содержащего его объекта. Значение по умолчанию установлено в false.
value
Значение, ассоциированное со свойством. Может быть любым допустимым значением JavaScript (числом, объектом, функцией и т.д.). Значение по умолчанию установлено в undefined.
writable
Равен true только в том случае, если значение, ассоциированное со свойством, может быть изменено с помощью оператора присваивания. Значение по умолчанию установлено в false.
get
Функция, используемая как геттер свойства, либо undefined, если свойство не имеет геттера. Возвращаемое значение функции будет использоваться как значение свойства. Значение по умолчанию установлено в undefined.
set
Функция, используемая как сеттер свойства, либо undefined, если свойство не имеет сеттера. Функция принимает единственным аргументом новое значение, присваиваемое свойству. Значение по умолчанию установлено в undefine
Для этого существуют классы:
class SomeObject {
constructor(sc = 0, lf = '', pf = '') {
this.submit_counter = sc;
this.$login_field = lf;
this.$passwd_field = pf;
}
Submit(n) {
console.log(`submit on ${n}`);
}
}
let obj1 = new SomeObject();
let obj2 = new SomeObject(10, 'Rusic', 'password');
console.log({
obj1,
obj2
});
obj1.Submit('obj1');
obj2.Submit('obj2');
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Пользуюсь VSCode плагином "Live sass compile"Необходимо настроить компиляцию SASS в прошлую папку, делаю это следующим образом:
С основными моментами я разобрался, но не могу понять как получить данные которые находятся между тегами
Проблема такая: при любом раскладе переменная getchar a возвращает '\n' и выполняет default (goto x), не учитывая остальноеКак можно исправить сие недоразумение?