Dalam JavaScript, tiada persamaan langsung dengan kaedah 'class.getName()' Java untuk mendapatkan nama kelas objek.
Kemas Kini ES2015 :
class Foo {} console.log(Foo.name); // "Foo"
Untuk objek bukan kelas, sebutan 'kelas' boleh didapati menggunakan sifat 'thing.constructor.name'.
var obj = {name: "John"}; console.log(obj.constructor.name); // "Object"
Godaan dan Alternatif:
Walaupun tiada 'class.getName()' asli yang setara , terdapat pelbagai penggodaman dan kaedah alternatif untuk mendapatkan kelas name:
Object.prototype.getName() Hack (tidak disyorkan):
Godam ini mengubah suai prototaip Objek dan menambah fungsi 'getName()' kepada semua objek, membolehkan mereka mengembalikan nama pembina mereka sebagai rentetan.
Object.prototype.getName = function() { var funcNameRegex = /function (.{1,})\(/; var results = funcNameRegex.exec(this.constructor.toString()); return results && results.length > 1 ? results[1] : ""; }; var obj = {name: "John"}; console.log(obj.getName()); // "Object"
Menggunakan Harta Pembina (bermasalah):
Setiap objek mempunyai sifat 'pembina' yang menunjuk kepada fungsi pembina yang menciptanya.
var myArray = [1, 2, 3]; console.log(myArray.constructor === Array); // true
Walau bagaimanapun, bergantung pada 'pembina' harta bermasalah kerana:
Menggunakan instanceof (juga bermasalah):
The 'instanceof' operator juga boleh digunakan untuk semakan jenis.
var myArray = [1, 2, 3]; console.log(myArray instanceof Array); // true
Walau bagaimanapun, 'instanceof' tidak berfungsi untuk nilai literal dan juga memecahkan bingkai silang dan tetingkap silang.
Menggunakan Object.prototype.toString:
Object.prototype.toString mengembalikan perwakilan rentetan objek taip.
console.log(Object.prototype.toString.call('abc')); // "[object String]" console.log(Object.prototype.toString.call(/abc/)); // "[object RegExp]"
Walaupun pendekatan ini menyediakan maklumat jenis untuk jenis terbina dalam, pendekatan ini mengembalikan 'Objek' untuk semua jenis yang ditentukan pengguna.
Kaveat:
Semua kaedah yang dinyatakan di atas mempunyai kaveat dan mungkin tidak boleh dipercayai dalam semua keadaan. Pertimbangkan kaedah pembinaan objek, terutamanya apabila berurusan dengan pewarisan dan fungsi tanpa nama.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Nama Kelas Objek dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!