Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 创建新类型,还是检查类型?_Javascript_Ecmascript 5 - Fatal编程技术网

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

Javascript 创建新类型,还是检查类型?,javascript,ecmascript-5,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,而不仅仅

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

function MyType(){

    this.someProp = 'someText';

};
我创建一个新实例:

var myVar = new MyType();
现在我想检查这个对象的类型

console.log(typeof(myVar));    //object
console.log(myVar.toString()); //[object Object]
有没有办法让
typeof
或默认的
toString
方法返回
MyType
,而不仅仅是
对象

  • 以上已在Chrome控制台上进行了测试

  • JSFiddle:


否,您不能覆盖
typeof
的行为。它已定义,并且有一组可能的返回值。它使用操作数的“”,它只能是null、未定义、string、boolean、number和object中的一个

但是,
instanceof
应该可以工作:

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

旁注
typeof
是一个运算符,而不是一个函数,因此不需要在它周围加括号。

不,不能重写
typeof
的行为。它已定义,并且有一组可能的返回值。它使用操作数的“”,它只能是null、未定义、string、boolean、number和object中的一个

但是,
instanceof
应该可以工作:

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

旁注
typeof
是一个运算符,而不是一个函数,因此不需要在它周围加括号。

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

  • 编号()
  • 字符串()
  • 布尔()
  • 对象()
  • 数组()
  • 函数()
  • 日期(
  • RegExp()
  • 错误()
还有3种基本类型:

  • 布尔值

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

  • 编号()
  • 字符串()
  • 布尔()
  • 对象()
  • 数组()
  • 函数()
  • 日期(
  • RegExp()
  • 错误()
还有3种基本类型:

  • 布尔值

是否可以将
MyType
作为字符串返回,而不是对构造函数进行测试?是否可以将
MyType
作为字符串返回,而不是对构造函数进行测试?