Предположим, вы используете следующую структуру:
var Args = new Object();
Args.Age = '10';
Args.Weight = '10';
Args.GetAge = function() {
return 'I am ' + Age + ' years old';
}
Args.GetWeight = function() {
return 'I weigh ' + Weight + ' pounds';
}
Это прекрасно работает. Но можно ли использовать общий тип, чтобы не создавать функцию для каждой переменной? Например, что-то вроде следующего:
Args.GetValue = function(i) {
return this.i;
}
Кажется, это не работает, но я даже не знаю, возможно ли это. Кто-нибудь знает ответ на эту загадку?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете получить доступ к свойствам через обозначение []:
alert(Args["Age"]);
И, как указано ниже, вы также можете просто прочитать значение через .Age или .Weight:
alert(Args.Age);
Это казалось очевидным, поэтому я подумал, что вы ищете что-то еще.
Кстати, вы можете упростить создание объекта, чтобы:
var args = { Age : '10', Weight : '10' };
Было бы лучше объявить функцию для Args вместо объекта? Таким образом, я мог просто использовать синтаксис var myArgs = new Args (). Конечно, функция getValue изменится на this.getValue = function (name) {return this [name]; }
Вот как работает Microsoft AJAX; есть функции для каждого сеттера и получателя. Они начинаются с _set и _get. В прототипе объявлена переменная уровня класса, а методы получения и установки возвращают и устанавливают эту переменную.
var Args = {};
Args.Age = '10';
Args.Weight = '10';
alert(Args.Age);
alert(Args.Weight);
Они доступны как для чтения, так и для записи, вам не нужны сеттеры / геттеры.
Я использую объект для хранения аргументов запуска сценария, и мне нужно преобразовать их в правильный формат. У меня есть функция, которая извлекает аргумент, но вместо этого я хотел вложить функцию в объект.