javascript isInstanceOf

时间:2011-05-03 09:11:54

标签: javascript

  

可能重复:
  how to detect if variable is a string

x = 'myname';
x.intanceOf == String

为什么第二个语句返回false?如何检查变量是否为字符串?

2 个答案:

答案 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