Apakah ada cara untuk mendapatkan nama variabel sebagai string di Javascript? (seperti NSStringFromSelector
dalam Kakao )
Saya ingin melakukan ini:
var myFirstName = 'John';
alert(variablesName(myFirstName) + ":" + myFirstName);
--> myFirstName:John
MEMPERBARUI
Saya mencoba menghubungkan browser dan program lain menggunakan JavaScript. Saya ingin mengirim nama contoh dari browser ke program lain untuk metode panggilan balik:
FooClass = function(){};
FooClass.someMethod = function(json) {
// Do something
}
instanceA = new FooClass();
instanceB = new FooClass();
doSomethingInAnotherProcess(instanceB); // result will be substituted by using instanceB.someMethod();
...
Dari program lain:
evaluateJavascriptInBrowser("(instanceName).someMethod("resultA");");
Di PHP: Bagaimana cara mendapatkan nama variabel sebagai string di PHP?
javascript
kentang ikan
sumber
sumber
variablesName(myFirstName)
, Anda sudah tahu nama variabelnya." Saya mencoba, tetapi saya tidak bisa ...console.log("myvar = " + myvar);
berulang-ulang, untuk setiap variabel.Jawaban:
Biasanya, Anda akan menggunakan tabel hash untuk situasi di mana Anda ingin memetakan nama ke beberapa nilai, dan dapat mengambil keduanya.
sumber
obj
dicetak sebagainame: value
pasangan. Tetapi teks yang menjelaskan bisa lebih jelas.Suka jawaban Seth, tetapi gunakan
Object.keys()
sebaliknya:sumber
Anda dapat menggunakan solusi berikut untuk menyelesaikan masalah Anda:
sumber
Di ES6, Anda dapat menulis sesuatu seperti:
Bukan hal yang benar-benar terlihat terbaik, tapi itu menyelesaikan pekerjaan.
Ini memanfaatkan objek destruksi ES6.
Info lebih lanjut di sini: https://hacks.mozilla.org/2015/05/es6-in-depth-destrukturisasi/
sumber
let nameObject = {myVar}
sangat berguna! Tampaknya tidak didokumentasikan di mana pun. Punya tautan?Namun, saya pikir Anda harus melakukan seperti "karim79"
sumber
x = 2; y = 2;
ataux = {a:1}; b = x;
akan memperingatkan mereka masing-masingvar foo = function f(){ f.x = 2; for(o in f){ if(f[o]===f.x) alert(o); } }
lalu meneleponf()
akan mengingatkan 'x'Ini berfungsi untuk ekspresi dasar
Contoh
Potongan:
sumber
Mungkin pop akan lebih baik daripada pengindeksan dengan [0], untuk keamanan (variabel mungkin nol).
sumber
Ini tidak dapat dibuat menjadi fungsi karena mengembalikan nama variabel fungsi.Sunting: Terima kasih kepada @Madeo karena telah menunjukkan cara menjadikan ini sebagai fungsi .
Anda perlu memanggil fungsi dengan array elemen tunggal yang berisi variabel.
debugVar({somefancyvariable});
Sunting:
Object.keys
dapat dirujuk hanyakeys
di setiap browser tempat saya mengujinya tetapi menurut komentar itu tidak berfungsi di mana-mana.sumber
const getVarName = (v) => Object.keys(v)[0];
dan kemudian memanggil fungsinya seperti inigetVarName({whatEverVariable})
Karena ECMAScript 5.1 Anda dapat menggunakan Object.keys untuk mendapatkan nama semua properti dari suatu objek.
Berikut ini sebuah contoh:
sumber
Ketika memiliki fungsi tulislah sebuah fungsi yang mengubah nilai variabel global yang berbeda itu tidak selalu myfirstname itu adalah apa pun yang terjadi. Coba ini berhasil untuk saya.
Jalankan di jsfiddle
Akan menulis ke jendela 'jack'.
sumber
Anda dapat merenungkan jenis dalam javascript dan mendapatkan nama properti dan metode tetapi apa yang Anda butuhkan adalah sth seperti
Lambda Expressions Trees
dalam. NET, saya pikir itu tidak mungkin karena sifat dinamis dan kurangnya sistem tipe statis di javascript.sumber
Saya membutuhkan ini, tidak ingin menggunakan objek, dan datang dengan solusi berikut, membalikkan pertanyaan.
Alih-alih mengubah nama variabel menjadi string, saya mengubah string menjadi variabel.
Ini hanya berfungsi jika nama variabel diketahui tentu saja.
Ambil ini:
Ini akan menampilkan:
Ini bisa dilakukan seperti ini:
Jadi saya menggunakan string
"height"
dan mengubahnya menjadi variabelheight
menggunakanwindow[]
perintah.sumber
window
objek karena variabel dari nama yang sama dideklarasikan pada lingkup jendela. Ini hanya berfungsi jika variabel dideklarasikan pada lingkup jendela, bukan dalam fungsi / penutupan.Cara singkat yang saya temukan sejauh ini untuk mendapatkan nama variabel sebagai string:
sumber
Ini berfungsi menggunakan Internet Explorer (9, 10 dan 11), Google Chrome 5:
Tabel kompatibilitas browser:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
sumber
Saya telah membuat fungsi ini berdasarkan JSON seperti yang disarankan seseorang, berfungsi dengan baik untuk kebutuhan debug saya
sumber
Tidak, tidak ada.
Selain itu, jika Anda bisa menulis
variablesName(myFirstName)
, Anda sudah tahu nama variabel ("myFirstName").sumber
nameof(myVariable)
dalam C # (yang mengembalikan string "myVariable" adalah untuk melindungi dari kesalahan ketika refactoring atau membuat perubahan lain pada kode. Kasus penggunaan umum adalah menambahkan nama variabel ke pesan kesalahan yang dilemparkan. Untuk itu sebagian besar saya menganggap string string sebagai bau kode, dan curiga itulah sebabnya setidaknya Visual Studio, menunjukkannya dalam warna merah / oranye. Saya tahu saya tahu, pertanyaan ini tentang Javascript, tapi saya hanya menjelaskan mengapa saya berakhir di sini.console.log('test')
atau ketika Anda benar-benar membutuhkannya.