首頁 >web前端 >js教程 >如何在 JavaScript 中取得物件類型的名稱?

如何在 JavaScript 中取得物件類型的名稱?

Barbara Streisand
Barbara Streisand原創
2024-12-08 15:25:11732瀏覽

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

在JavaScript 中取得物件類型的名稱

Java 提供了class.getName() 方法來擷取物件的類型,JavaScript 缺乏直接的等價物。然而,可以採用多種技術來實現類似的結果。

一種方法涉及修改物件的原型以添加getName() 函數:

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

透過此hack,所有物件都將現在有一個getName() 方法,它以字串形式傳回構造函數的名稱。

另一個選項是使用 constructor 屬性。雖然它通常適用於測試物件的類型,如下所示:

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

但是,有一些警告可能會破壞其可靠性,例如多重繼承或不使用「new」關鍵字建立的物件。

instanceof 運算子是另一種選擇,但它也有其限制。它不適用於文字值,需要使用正確的建構函數來建立物件。

另一種方法是使用 constructor.name 屬性,儘管它可能不適合 IE9 或更低版本。為了相容性,可以實現猴子修補程式解決方案:

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

最後,Object.prototype.toString可用於確定所有內建類型的類型,但它為所有內建類型傳回「Object」使用者定義的類型。

在選擇確定 JavaScript 中物件類型的方法時,了解每種方法的注意事項和限制非常重要。

以上是如何在 JavaScript 中取得物件類型的名稱?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn