我们都知道只有对象才有属性值,那么问题来了,字符串作为基本变量为何也能够调用length属性?
原来是这样的:
- 字符串、数值以及布尔值在访问属性或者调用方法的时候内部会隐式的创建一个对象,利用该对象来访问属性或者是调用方法
- 得到结果之后,把结果赋值给基本数据类型的值
- 销毁这个创建的对象
这样就能够理解为什么基本属性也能够使用属性了0.0
下面上几个例子来清楚的了解一下:
var str1 = "demo01"; //string
var str2 = new String("demo01"); //object
var str3 = String("demo01");
console.log(str1 == str2); //true 转换
console.log(str1 === str2); //false
console.log(str1.length); //6
str1.des = "描述信息";
console.log(str1.des); //undefined,赋值完直接销毁,所以找不到值
str2.des = "des";
console.log(str2.des); //输出des,因为str2为object类型