x = 'myname';
x.intanceOf == String
为什么第二个语句返回false?如何检查变量是否为字符串?
答案 0 :(得分:4)
这是假的,因为intanceOf
[sic]是undefined
,而不是对String
构造函数的引用。
instanceOf
是一个运算符,而不是实例方法或属性,使用如下:
"string" instanceof String
但是这将返回false,因为文字字符串不是使用String object
构造函数创建的String
。
所以你真正想做的是使用type
运算符
typeof "string" == "string"
答案 1 :(得分:1)
毕竟使用instanceOf可能不是一个好主意。
typeof运算符(连同 instanceof)可能是最大的 设计JavaScript的缺陷,因为它 接近完全破碎。
请参阅:http://bonsaiden.github.com/JavaScript-Garden/#types.typeof
而是像这样使用 Object.prototype.toString :
function is(type, obj) {
var clas = Object.prototype.toString.call(obj).slice(8, -1);
return obj !== undefined && obj !== null && clas === type;
}
is('String', 'test'); // true
is('String', new String('test')); // true