Rumah > hujung hadapan web > tutorial js > Bagaimana untuk Mendapatkan Nama Kelas Objek dalam JavaScript?

Bagaimana untuk Mendapatkan Nama Kelas Objek dalam JavaScript?

Barbara Streisand
Lepaskan: 2024-12-08 13:27:17
asal
447 orang telah melayarinya

How to Get the Class Name of an Object in JavaScript?

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"
Salin selepas log masuk

Untuk objek bukan kelas, sebutan 'kelas' boleh didapati menggunakan sifat 'thing.constructor.name'.

var obj = {name: "John"};
console.log(obj.constructor.name); // "Object"
Salin selepas log masuk

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"
Salin selepas log masuk

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
Salin selepas log masuk

Walau bagaimanapun, bergantung pada 'pembina' harta bermasalah kerana:

  • Ia mungkin tidak memberikan maklumat yang tepat dalam kes di mana warisan terlibat.
  • Ia memecahkan bingkai silang dan tetingkap silang.

Menggunakan instanceof (juga bermasalah):

The 'instanceof' operator juga boleh digunakan untuk semakan jenis.

var myArray = [1, 2, 3];
console.log(myArray instanceof Array); // true
Salin selepas log masuk

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]"
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan