《JavaScript面试大师》系列文章的核心在于沿用应试教育的套路,采取:知识点+刷题的模式来加深巩固理解,目的在于斩获心仪offer,更高的目的在于提升对语言本身的理解,达到融会贯通。
String面试题:
- 基本类型(primitive)和基本包类型(primitive wrapper)的区别
- 基本类型没有自己的方法,为什么基本类型Boolean、Number和String能调用方法
- 将值转成字符串的方法
- 说说对toString()的理解
- 说说对String()的理解
面试题1:基本类型(primitive)和基本包类型(primitive wrapper)的区别
解答:参考《Javascript面试大师_Boolean类型》
面试题2:基本类型没有自己的方法,为什么基本类型Boolean、Number和String能调用方法
解答:使用基本类型Boolean、Number和String调用方法时,JS引擎会发生:
- 创建对应包类型对象
- 对实例调用方法
- 删除实例
且自动生成的包类型对象只在一行代码有效,如下所示:
let a = 'this is a string test';
s.name = 'test';
console.log(s.name); // undefined
执行s.name = 'test' 时,JS引擎创建了一个String对象,给他增加了一个name属性,而当执行console.log(s.name)时,String对象已被销毁
参考:
面试题3:将值转成字符串的方法
解答:
- toString()[除Null和Undefined类型外的所有类型均有]
- String()[任何类型]
参考:
- 《JavaScript高级程序设计》 3.4.6 String类型 3转换为字符串
面试题4:说说对toString()的理解
解答:一般有两种,Object.prototype.toString()和普通对象的toString方法,前者是根源。使用前者,会返回"[object xxx]"的字符串,常用于判断JavaScript数据类型(自定义类型除外,除非给了[Symbol.toStringTag]属性值);后者是对前者的重写,JavaScript大多数对象中,toString()方法都是重写了的,返回值得看具体定义。
参考:
面试题5:说说对String()的理解
解答:可以将任何类型转为字符串,转换规则如下:
- 值具有toString()方法,则调用并返回结果
- 值为null,返回"null"
- 值为undefined,返回"undefined"
参考:
- 《JavaScript高级程序设计》 3.4.6 String类型 3转换为字符串