<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<meta name="Keywords" content="">
<meta name="Description" content="">
<title>计算"对象的长度"原理</title>
</head>
<body>
<script type="text/javascript">
var len = ({}+{}).length;
//计算长度
alert("对象的长度:"+len);
//"{}"是一个对象,对象是没有长度的,而字符串就不同,字符串有长度。这里的原理是执行{}+{}时,它调用了对象中的toString()方法转换为字符串了。因为js的弱类型语言,它隐式对类型做出了转换,所以就计算出了它的字符串长度。
var obj = {};
alert(obj); //打印是:[object Object],你可以想一想[object Object]+[object Object]的字符串长度是30。
</script>
</body>
</html>
<!--
作者:罗祥
内容:计算"对象长度"的原理
日期:2017/8/7
-->
这段代码你表面上看是对象相加取长度,按道理来说对象是没有长度这一说法,但上面试代码却打印如下结果:
为什么会打印30呢?这是因为js是一门弱类型语言,在它内部会对类型做出隐式的转换,刚才看到的其实是字符串相加的结果,不信再看这段代码:
var obj = {};
alert(obj); //打印是:[object Object],你可以想一想[object Object]+[object Object]的字符串长度是30。
结果: