026|String字面值与String对象

在前面的课程中,我们谈到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类型的对象。看一下我们的输出:

026|String字面值与String对象_第1张图片
运行结果

可以看到,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专业级导师指导吗?想要团队陪你一起进步吗?欢迎加我为好友!

026|String字面值与String对象_第2张图片
我的微信

你可能感兴趣的:(026|String字面值与String对象)