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
Barbara Streisandasal
2024-12-08 15:25:11731semak imbas

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] : """";
};

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

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) {}
  });
}

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!

Kenyataan:
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