Помещение моих переменных в пространство имен - PullRequest
2 голосов
/ 07 июля 2011

Как я могу создать объект, содержащий мои переменные, используя те же имена переменных или другими словами, как я могу поместить свои переменные в пространство имен?

var a = "variable";
var b = "variable";

var obj = {
    a : a
    b : b
}

Есть ли более короткий способ сделать эточем это?

РЕДАКТИРОВАТЬ:

Позвольте мне уточнить - у меня уже есть переменные a и b где-то объявлены.В конце концов, в какой-то момент я хочу отправить их все, например, в другую функцию, но я хочу, чтобы все переменные были в одном пространстве имен - obj.Поэтому вместо того, чтобы делать утомительное повторное выделение каждой отдельной переменной с использованием одинаковых имен переменных и одинаковых значений переменных (самой переменной), я подумал, что, возможно, существует сокращенный способ: например,

var obj = objectify(a, b);

Я подумал, было ли что-то подобноеуже встроен в библиотеку JavaScript.

Ответы [ 5 ]

1 голос
/ 07 июля 2011

Поскольку вы фактически не помещаете переменные в объект, а только копируете их содержимое в свойства с одинаковыми именами, вам вообще не нужно создавать переменные:

var obj = {
  a: "variable",
  b: "variable"
};

Обратите внимание на запятуюмежду необходимыми свойствами и точкой с запятой после объявления объекта, что рекомендуется.

Вы также можете создать пустой объект и впоследствии добавить к нему свойства (или любую понравившуюся вам комбинацию):

var obj = {};
obj.a = "variable";
obj.b = "variable";
0 голосов
/ 07 июля 2011

Нельзя с пользой помещать существующие переменные в объект пространства имен.

В частности, если у вас есть:

var a = 1;
var b = "test";
var c = { ... };  // some object

var NS = {
    a: a,
    b: b,
    c: c
};

Тогда изменения на a или b не затронут NS.a или NS.b, и наоборот, поскольку записи в объекте NS являются копиями оригиналов.

Однако изменения в содержимом из c затронут NS.c (и наоборот), поскольку c является ссылкой на объект.

Однако все, что вы сделаете с последующим изменением ссылки, хранящейся в NS.c, прервет эту ссылку.

0 голосов
/ 07 июля 2011

В текущей версии javascript нет пространств имен, поэтому единственный способ поместить эти переменные в объект, что вы и сделали Вы также можете создать объект и назначить ему переменные, хотя он не короче:

var x = {};
x.foo = "foo";
0 голосов
/ 07 июля 2011
var obj = {
  a: "variable",
  b: "variable"
};

Возможно, я неправильно понимаю Ваш запрос здесь

0 голосов
/ 07 июля 2011
var a = "variable";
var b = "variable";
var obj = {};
obj[a] = a;
obj[b] = b;

Извините за макет, но в редакторе WYSIWYG нет вкладок (

...