Я хочу использовать строковые константы вместо прямых строк в моих объектах Javascript (при определении ключей параметров и т. д.). Цель состоит в том, чтобы мой код был проиндексирован IDE, имел предложения, автокоррекции/дополнения, все безошибочные плюсы.
Я хочу определить явные ключи для конструктора этого класса EPPZObject
, поэтому я сделал:
var EPPZ =
{
width: 'width',
height: 'height'
}
var EPPZObject = Class.extend
({
construct: function(parameters)
{
// Constant usage works fine here.
log(parameters[EPPZ.width]);
log(parameters[EPPZ.height]);
}
});
В клиентском коде я также могу использовать константы:
log(EPPZ.width); // Logs 'width' just fine.
log(EPPZ.height); // Logs 'height' just fine.
Но когда я хочу использовать константы при построении (на самом деле в этом весь смысл), то это просто не работает:
var objectThatWorks = new EPPZObject(
{
'width' : '9',
'height' : '9',
});
var objectThatNotWorks = new EPPZObject(
{
EPPZ.width : '9',
EPPZ.height : '9',
});
В нем говорится:
Uncaught SyntaxError: Unexpected token .
Как преодолеть это? Есть ли такое же чистое решение для использования констант?
How to use expressions as associative array keys at declaration time?
- person Geri Borbás   schedule 03.01.2014