在前面的课程中,我们谈到JavaScript是一切皆对象。作为初学者,这样理解会比较简单。
实际上,JavaScript中有一部分数据类型是原始内存数据, 而非对象。比如这节要讲的String字面值。
String字面值的英文是 String Literals, JavaScript代码中,所有用 "" 直接生成的字符串都是String字面值。这是一个赤裸的内存数据,而非对象。如:
var name = "David" // name指向的是一个 String字面值
console.log(name.length) // 输出 5
我们知道,只有对象才有属性,普通的内存数据是没有属性的。那么String字面值为什么会有的length属性呢?
String对象
在JavaScript,有一种叫String的对象类型,String对象类型的实例是一个对象,它是对String字面值的封装。比如:
var name = new String("James"); // 创建一个String对象
console.log(name);
上面以"James"为参数创建了一个String类型的对象。看一下我们的输出:
可以看到,String对象的输出与String字面值不一样。上图输出的意思是,输出的是一个String类型的问题,内含的String字面值为'James'。
字面值与对象的转换
现在我们知道,String字面值仅仅是个内存数据,没有属性和方法。那么为什么编码时String字面值又拥有length属性呢?如下:
var name = "David"
console.log(name.length) // 输出5
这是因为,JavaScript引擎会自动把String字面值转换为一个临时的String对象, 然后调用其相应方法,最后再丢弃此临时对象。
同理,所有其它String对象能用的方法,在String字面值上都能使用。
好,这一节讲完了。这一节我们学习了JavaScript中一些较为本质的东西,希望你获益良多。后续还有很多技巧需要你慢慢学习。
什么是Number字面值?
什么是Number对象?
什么是变量作用域?
请继续关注我的课程,我将在后续课程中为大家解答上述问题。
想学计算机技术吗?需要1对1专业级导师指导吗?想要团队陪你一起进步吗?欢迎加我为好友!