Sulit untuk menjelaskan kasus per kata, izinkan saya memberi contoh:
var myObj = {
'name': 'Umut',
'age' : 34
};
var prop = 'name';
var value = 'Onur';
myObj[name] = value; // This does not work
eval('myObj.' + name) = value; //Bad coding ;)
Bagaimana cara menyetel properti variabel dengan nilai variabel di objek JavaScript?
javascript
object
properties
set
Umut KIRGÖZ
sumber
sumber
myObj[prop] = value;
.eval('myObj.'+name)
tidak bekerja karena variabelname
tidak ada.var
keyboard untuk mendeklarasikan variabel, menggunakan lebih banyak titik koma, tidak menggunakaneval
dan menerima lebih banyak jawaban. Selesai.myObj[name]
" ketika saya yakin Anda bermaksud menulis "myObj[prop]
".Jawaban:
Seharusnya itu berhasil. Anda mencampurkan nama variabel dan nilainya. Tapi mengindeks objek dengan string untuk mendapatkan propertinya berfungsi dengan baik di JavaScript.
sumber
atau
Keduanya dapat dipertukarkan.
Sunting: Saya rasa yang Anda maksud
myObj[prop] = value
, bukan myObj [name] = value. Sintaks kedua berfungsi dengan baik: http://jsfiddle.net/waitinforatrain/dNjvb/1/sumber
name
tempat yang seharusnyaprop
Anda bisa mendapatkan properti dengan cara yang sama seperti yang Anda tetapkan.
Anda mengatur nilainya
foo["bar"] = "baz";
Untuk mendapatkan nilainya
foo["bar"]
akan mengembalikan "baz".
sumber
Anda juga bisa membuat sesuatu yang mirip dengan objek nilai (vo);
SomeModelClassNameVO.js;
Dari yang bisa Anda lakukan;
sumber
Saat Anda membuat objek
myObj
seperti yang Anda miliki, anggaplah itu lebih seperti kamus. Dalam hal ini, ini memiliki dua kunciname
,, danage
.Anda dapat mengakses kamus ini dengan dua cara:
myObj[name]
); ataumyObj.name
); perhatikan bahwa beberapa properti dicadangkan, jadi metode pertama lebih disukai.Anda seharusnya dapat mengaksesnya sebagai properti tanpa masalah. Namun, untuk mengaksesnya sebagai array, Anda harus memperlakukan kunci tersebut seperti string.
Jika tidak, javascript akan menganggap itu
name
sebagai variabel, dan karena Anda belum membuat variabel yang dipanggilname
, ia tidak akan dapat mengakses kunci yang Anda harapkan.sumber
myObj[name]
danmyObj.name
, karena yang pertama mengacu pada nama variabel dan yang kedua mengacu pada kunci literal.sesederhana ini
myObj.name = value;
sumber