<html>
<head>
<script type="text/javascript">
function fuck()
{
var iString = new String("fuck");
var oString = iString.concat(" you");
alert(iString instanceof String);
}
</script>
</head><body onload="fuck()"></body>
</html>返回的 当然是true但是如果是alert(oString instanceof String);
返回的就是 false 为什么 oString 不是字符对象么?
concat是用于连接两个数组的 字符串通常没有用concat的 而是用 +=
function fuck()
{
var iString = new String("fuck");
var oString = iString.concat(" you");
alert(typeof iString);
alert(typeof oString);
};
fuck();
这个弹出的结果是 object 和 string
而instanceof 方法要求开发者明确地确认对象为某特定类型,我的理解是oString不是String的实例,因为它不是真正的对象,而是伪对象。
参考下面链接的:concat返回的是 String 原始值,而 String 对象的所有属性和方法都可应用于 String 原始值上,因为它们是伪对象。
http://www.w3school.com.cn/js/pro_js_referencetypes.asp
2、instanceof运算符的左运算数不是对象时就会返回false
3、typeof运算符主要是用来从对象中区分出基本类型(string,number,boolean)。如果typeof的运算数是数字、字符串或者布尔值,它将返回的结果是"number"、"string"、"boolean"。对对象、数组和"null",它将返回"object"。对函数,它将返回"function"。对于"undefined",它将返回"undefined"。特别注意:如果typeof的运算数是Number,String或Boolean这样的包装对象时,它将返回"object"。此外,对于"Date"和"RegExp"对象,它也将返回"objext".
如果楼主把这一句改成这样var oString = new String(iString.concat(" you"));结果为true,并且此时typeof(oString)将返回"object".