如何检测变量是否是一个字符串
如何检测变量是否是字符串?
这是ECMAScript规范中指定的用于确定内部[[Class]]属性的方式。
if( Object.prototype.toString.call(myvar) == '[object String]' ) {
// a string
}
从8.6.2对象内部属性和方法 :
本规范针对每种内置对象定义[[Class]]内部属性的值。 主对象的[[Class]]内部属性的值可以是除“Arguments”,“Array”,“Boolean”,“Date”,“Error”,“Function”,“JSON”之外的任何字符串值。 ,“数学”,“数字”,“对象”,“RegExp”和“字符串” 。 [[Class]]内部属性的值用于内部区分不同类型的对象。 请注意,除了通过Object.prototype.toString(见15.2.4.2)外,本规范没有提供任何方法让程序访问该值。
有关如何有用的示例,请考虑以下示例:
var str = new String('some string');
alert( typeof str ); // "object"
alert( Object.prototype.toString.call(str) ); // "[object String]"
如果你使用typeof
,你会得到"object"
。
但是如果你使用上面的方法,你会得到正确的结果"[object String]"
。
你可以使用typeof
来做到这一点,但对于很多事情来说,这是糟糕的设计。
if (typeof myVar == "string") {
alert("I'm a string!");
}
使用typeof。
if (typeof foo == 'string')
链接地址: http://www.djcxy.com/p/94973.html