自定義toString()方法檢測對象類型時的返回值[object x](JS)

如果想通過 Object.prototype.toString() 方法來檢測對象類型,則需要以 Function.prototype.call() 或者 Function.prototype.apply() 的形式來調用 toString() 方法。

示例:

const _toString = Object.prototype.toString;

_toString.call(new Date());
// output: '[object Date]'

_toString.call(Math);
// output: '[object Math]'

 

對於我們開發者自定義的類型,使用 toString() 方法檢測後返回的類型字符串標識可能不是我們期待的值!

示例:

class MyTestClz {}

const _toString = Object.prototype.toString;
const typeString = _toString.call(new MyTestClz());
console.log(typeString);
// output: '[object Object]'

如果我們想自定義使用 toString() 方法進行類型檢測後的返回值,應該怎麼處理呢?

(我們可以通過設置 Symbol.toStringTag 屬性)

該屬性的屬性值應爲字符串類型,用來表示該對象的自定義類型標籤。

class MyTestClz {
  get [Symbol.toStringTag]() {
    return 'MyTestClz';
  }
}

// ...
// ...

console.log(typeString);
// output: '[object MyTestClz]'

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章