创建新类型,还是检查类型?

时间:2013-02-01 16:28:37

标签: javascript ecmascript-5

例如,我有以下构造函数:

function MyType(){

    this.someProp = 'someText';

};

我创建了一个新实例:

var myVar = new MyType();

现在我想检查这个对象的类型......

console.log(typeof(myVar));    //object
console.log(myVar.toString()); //[object Object]

typeof或默认toString方法是否有办法返回 MyType ,而不仅仅是object

2 个答案:

答案 0 :(得分:2)

不,您无法覆盖typeof的行为。它定义为in the spec,并且有一定数量的可能返回值。它使用操作数的“type”,它只能是null,undefined,string,boolean,number和object之一。

但是,instanceof应该有效:

console.log(myVar instanceof MyType); // true

旁注... typeof是一个操作符,而不是一个函数,所以你不需要它周围的括号。

答案 1 :(得分:1)

不,Javascript中没有自定义类型。有9个本地构造函数:

  • 数()
  • 字符串()
  • 布尔()
  • 对象()
  • 阵列()
  • 功能()
  • 日期()
  • 正则表达式()
  • 错误()

还有3种原始类型:

  • 字符串
  • 布尔