Rumah > hujung hadapan web > tutorial js > Bagaimanakah Saya Boleh Mendapatkan Nama Jenis Objek dalam JavaScript?

Bagaimanakah Saya Boleh Mendapatkan Nama Jenis Objek dalam JavaScript?

Barbara Streisand
Lepaskan: 2024-12-08 15:25:11
asal
730 orang telah melayarinya

How Can I Get the Name of an Object's Type in JavaScript?

Mendapatkan Nama Jenis Objek dalam JavaScript

Walaupun Java menawarkan kaedah class.getName() untuk mendapatkan semula jenis objek , JavaScript tidak mempunyai persamaan langsung. Walau bagaimanapun, beberapa teknik boleh digunakan untuk mencapai hasil yang serupa.

Satu pendekatan melibatkan pengubahsuaian prototaip Objek untuk menambah fungsi getName():

Object.prototype.getName = function() {
  var funcNameRegex = /function (.{1,})\(/;
  var results = (funcNameRegex).exec((this).constructor.toString());
  return (results && results.length > 1) ? results[1] : """";
};
Salin selepas log masuk

Dengan penggodaman ini, semua objek akan kini mempunyai kaedah getName() yang mengembalikan nama pembina sebagai rentetan.

Pilihan lain ialah menggunakan harta pembina. Walaupun ia secara amnya berfungsi untuk menguji jenis objek seperti itu:

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

Walau bagaimanapun, terdapat kaveat tertentu yang boleh memecahkan kebolehpercayaannya, seperti berbilang warisan atau objek yang dicipta tanpa menggunakan kata kunci "baharu".

Instanceof operator ialah alternatif lain, tetapi ia juga mempunyai hadnya. Ia gagal berfungsi untuk nilai literal dan memerlukan objek dibuat menggunakan pembina yang betul.

Pendekatan lain ialah menggunakan sifat constructor.name, walaupun ia mungkin tidak sesuai untuk IE9 atau ke bawah. Untuk keserasian, penyelesaian tampalan monyet boleh dilaksanakan:

if (Function.prototype.name === undefined && Object.defineProperty !== undefined) {
  Object.defineProperty(Function.prototype, 'name', {
    get: function() {
      var funcNameRegex = /function\s([^(]{1,})\(/;
      var results = (funcNameRegex).exec((this).toString());
      return (results && results.length > 1) ? results[1].trim() : """";
    },
    set: function(value) {}
  });
}
Salin selepas log masuk

Akhir sekali, Object.prototype.toString boleh digunakan untuk menentukan jenis untuk semua jenis terbina dalam, tetapi ia mengembalikan "Objek" untuk semua jenis yang ditentukan pengguna.

Adalah penting untuk mengetahui kaveat dan batasan setiap pendekatan apabila memilih kaedah untuk menentukan jenis objek dalam JavaScript.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Nama Jenis 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