use*_*716 35
这是ECMAScript规范中指定的方式,用于确定内部[[Class]]属性.
if( Object.prototype.toString.call(myvar) == '[object String]' ) {
// a string
}
Run Code Online (Sandbox Code Playgroud)
[[Class]]内部属性的值由此规范为每种内置对象定义.主机对象的[[Class]]内部属性的值可以是除"Arguments","Array","Boolean","Date","Error","Function","JSON"之一之外的任何String值.,"数学","数字","对象","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]"
Run Code Online (Sandbox Code Playgroud)
如果你使用typeof,你得到"object".
但是如果你使用上面的方法,你会得到正确的结果"[object String]".
Dan*_*olo 19
你可以typeof用来做,但对于很多事情来说这是糟糕的设计.
if (typeof myVar == "string") {
alert("I'm a string!");
}
Run Code Online (Sandbox Code Playgroud)
使用typeof.
if (typeof foo == 'string')
Run Code Online (Sandbox Code Playgroud)
我认为我们不需要将其new String('some string')视为字符串,因为如果我们尝试:
new String('abc')==='abc'
Run Code Online (Sandbox Code Playgroud)
它会返回错误!
但是如果我们尝试:
String('abc')==='abc'
Run Code Online (Sandbox Code Playgroud)
它会返回真。
| 归档时间: |
|
| 查看次数: |
37613 次 |
| 最近记录: |