自定义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]'

 

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