Apakah ada solusi untuk mendapatkan nama fungsi suatu objek?
function alertClassOrObject (o) {
window.alert(o.objectName); //"myObj" OR "myClass" as a String
}
function myClass () {
this.foo = function () {
alertClassOrObject(this);
}
}
var myObj = new myClass();
myObj.foo();
for (var k in this) {...}
- tidak ada informasi tentang className
atau ObjectName
. Apakah mungkin untuk mendapatkan salah satunya?
javascript
TJR
sumber
sumber
Jawaban:
Dapatkan fungsi konstruktor objek Anda dan kemudian periksa properti namanya .
Mengembalikan "myClass".
sumber
Object
), Anda akan mendapatkan nama tautan pertama dalam rantai itu, bukan nama konstruktor yang digunakan untuk membuat objek. Ambil contoh berikut:function Daddy() {}; function Me() {}; Me.prototype = new Daddy; me = new Me;
.me.constructor.name
lalu tiba-tiba kembali'Daddy'
, tidak'Me'
.var Foo = function() {};
.> myclass=(function(){}); new myclass
cetakanmyclass {}
Contoh:
sumber
function Foo() { return {'foo':'bar'} }; var f = new Foo();
:(Jika Anda menggunakan IIFE standar (misalnya dengan TypeScript)
Anda dapat membuat anotasi prototipe di muka dengan
dan kemudian gunakan bidang _fullname dan _classname.
fungsi anotasi di sini:
JsFiddle
sumber
Karena ini sudah dijawab, saya hanya ingin menunjukkan perbedaan dalam pendekatan untuk mendapatkan konstruktor dari objek dalam JavaScript. Ada perbedaan antara konstruktor dan objek / nama kelas yang sebenarnya. Jika yang berikut menambah kompleksitas keputusan Anda, mungkin Anda sedang mencari
instanceof
. Atau mungkin Anda harus bertanya pada diri sendiri, "Mengapa saya melakukan ini? Apakah ini benar-benar yang saya coba selesaikan?"Catatan:
Tidak
obj.constructor.name
tersedia di browser lama. Pencocokan(\w+)
harus memenuhi kelas gaya ES6.Kode:
Hasil:
Kode: https://jsbin.com/wikiji/edit?js,console
sumber
Saya menghadapi kesulitan yang sama dan tidak ada solusi yang disajikan di sini yang optimal untuk apa yang saya kerjakan. Apa yang saya miliki adalah serangkaian fungsi untuk menampilkan konten dalam modal dan saya mencoba untuk membuatnya kembali di bawah definisi objek tunggal yang membuat fungsi, metode kelas. Masalahnya muncul ketika saya menemukan salah satu metode membuat beberapa tombol nav di dalam modal sendiri yang menggunakan onClick ke salah satu fungsi - sekarang menjadi objek kelas. Saya telah mempertimbangkan (dan masih mempertimbangkan) metode lain untuk menangani tombol nav ini, tetapi saya dapat menemukan nama variabel untuk kelas itu sendiri dengan menyapu variabel yang didefinisikan di jendela induk. Apa yang saya lakukan adalah mencari sesuatu yang cocok dengan 'instanceof' kelas saya, dan kalau-kalau mungkin ada lebih dari satu,
sumber
Coba ini:
sumber
Semua yang kita butuhkan:
sumber