Utwórz obiekt używając zmiennych do nazwy właściwości [duplikat]
Czy w ogóle można używać nazw zmiennych we właściwościach obiektowych do tworzenia obiektów?
Przykład
function createJSON (propertyName){
return { propertyName : "Value"};
}
var myObject = createJSON("myProperty");
console.log(myObject.propertyName); // Prints "value"
console.log(myObject.myProperty); // This property does not exist
4 answers
Jeśli chcesz użyć zmiennej jako nazwy właściwości, możesz użyć obliczonych nazw właściwości. Umieść nazwę zmiennej między nawiasami kwadratowymi:
var foo = "bar";
var ob = { [foo]: "something" }; // ob.bar === "something"
Jeśli chcesz mieć wsparcie dla Internet Explorera, musisz użyć podejścia ES5 (które możesz uzyskać pisząc nowoczesną składnię (jak wyżej), a następnie stosując Babel):
Najpierw Utwórz obiekt, a następnie dodaj właściwość za pomocą notacji nawiasu kwadratowego .
var foo = "bar";
var ob = {};
ob[foo] = "something"; // === ob.bar = "something"
Jeśli chcesz programować Utwórz JSON, będziesz musiał serializować obiekt do ciągu zgodnego z formatem JSON. np. metodą JSON.stringify
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-04-15 20:24:30
ES6 wprowadza obliczone nazwy właściwości, które pozwalają wykonać
function CreateJSON (propertyName){
var myObject = { [propertyName] : "Value"};
}
Uwaga obsługa przeglądarki jest obecnie znikoma.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-15 19:48:53
Możesz tak:
var myObject = {};
CreateProp("myProperty","MyValue");
function CreateProp(propertyName, propertyValue)
{
myObject[propertyName] = propertyValue;
alert(myObject[propertyName]); // prints "MyValue"
};
Sam o wiele udoskonaliłem tę składnię:
function jsonObject()
{
};
var myNoteObject = new jsonObject();
function SaveJsonObject()
{
myNoteObject.Control = new jsonObject();
myNoteObject.Control.Field1= "Fred";
myNoteObject.Control.Field2= "Wilma";
myNoteObject.Control.Field3= "Flintstone";
myNoteObject.Control.Id= "1234";
myNoteObject.Other= new jsonObject();
myNoteObject.Other.One="myone";
};
Następnie możesz użyć:
SaveJsonObject();
var myNoteJSON = JSON.stringify(myNoteObject);
Uwaga: To wykorzystuje json2.js stąd: http://www.json.org/js.html
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-01 20:19:38
Jedna rzecz, która może być odpowiednia (teraz, gdy funkcjonalność JSON jest wspólna dla nowszych przeglądarek, a json2.JS jest całkowicie poprawnym fallback), jest skonstruowanie ciągu JSON, a następnie parsować go.
function func(prop, val) {
var jsonStr = '{"'+prop+'":'+val+'}';
return JSON.parse(jsonStr);
}
var testa = func("init", 1);
console.log(testa.init);//1
Pamiętaj, że nazwy właściwości JSON muszą być zawarte w podwójnych cudzysłowach.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-06 02:19:41