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()
- 错误()
- 串
- 数
- 布尔值
- 编号()
- 字符串()
- 布尔()
- 对象()
- 数组()
- 函数()
- 日期(
- RegExp()
- 错误()
- 串
- 数
- 布尔值
MyType
作为字符串返回,而不是对构造函数进行测试?是否可以将MyType
作为字符串返回,而不是对构造函数进行测试?