上一篇文章开始讲到JS的内置对象,本篇继续上一篇的内容。
4. Boolean对象
Boolean作为构造函数和普通函数的使用有什么不同?
- 作为构造函数,它主要用于生成布尔值的包装对象实例,即生成值的类型是对象,值为布尔值
- 作为普通函数,它就是一个单纯的工具方法,将任意值转为布尔值
正因为第一条,一些特殊值,Boolean对象前面加不加new,会得到完全相反的结果,必须小心。如new Boolean(false)
的值实际上是true。
5. Number对象
Number对象有哪些实例方法?
- toString: 用来将一个数值转为字符串形式;
注意:toString方法可以接受一个参数,表示输出的进制。如果省略这个参数,默认将数值先转为十进制,再输出字符串;否则,就根据参数指定的进制,将一个数字转化成某个进制的字符串
- toFixed: 先将一个数转为指定位数的小数,然后返回这个小数对应的字符串
注意:由于浮点数的原因,小数5的四舍五入是不确定的
- toExponential: 将一个数转为科学计数法形式
- toPrecision: 将一个数转为指定位数的有效数字
6. String对象
slice和substring,substr的异同?
- slice从原字符串取出子字符串并返回,不改变原字符串,
- 第一个参数是子字符串的开始位置,第二个参数是子字符串的结束位置
- 如果省略第二个参数,则表示子字符串一直到原字符串的结束
- 如果参数是负值,表示从结尾开始倒数计算的位置
- 如果第一个参数大于第二个参数,slice方法返回一个空字符串
- substring从原字符串取出子字符串并返回,不改变原字符串
- 第一个参数表示子字符串的开始位置,第二个位置表示结束位置
- 如果省略第二个参数,则表示子字符串一直到原字符串的结束
- 如果参数是负数,substring方法会自动将负数转为0
- 如果第一个参数大于第二个参数,substring方法会自动更换两个参数的位置
- substr方法用于从原字符串取出子字符串并返回,不改变原字符串
- 第一个参数是子字符串的开始位置(从0开始计算),第二个参数是子字符串的长度
- 如果省略第二个参数,则表示子字符串一直到原字符串的结束
- 如果第一个参数是负数,表示倒数计算的字符位置。如果第二个参数是负数,将被自动转为0,因此会返回空字符串
// 第二个参数大于字符串的长度时:
'Armor'.slice(1, 7); // "rmor"
'Armor'.substring(1, 7); // "rmor"
'Armor'.substr(1, 7); // "rmor"
// 第二个参数为负数
'Armor'.slice(1, -1); // "rmo"
'Armor'.substring(1, -1); // "A"
'Armor'.substr(1, -1); // ""
// 第一个参数大于第二个参数
'Armor'.slice(3, 1); // ""
'Armor'.substring(3, 1); // "rm"
'Armor'.substr(3, 1); // "o"
7. Math对象
Math有哪些常用的静态方法?
- Math.abs():绝对值
- Math.ceil():向上取整
- Math.floor():向下取整
- Math.max():最大值, 参数为空时返回-Infinity
- Math.min():最小值, 参数为空时返回Infinity
- Math.pow():指数运算
- Math.sqrt():平方根, 如果参数是一个负值,则返回NaN
- Math.log():自然对数
- Math.exp():e的指数
- Math.round():四舍五入
- Math.random():随机数
8. Date对象
Date的构造函数和普通函数的用法?
- 作为普通函数直接调用,返回一个代表当前时间的字符串,即使带有参数,返回的仍然是当前时间的字符串
- 作为构造函数使用,返回一个Date对象的实例。如果不加参数,实例代表的就是当前时间
- 参数可以是负整数,代表1970年元旦之前的时间
- 只要是能被Date.parse()方法解析的字符串,都可以当作参数
- 参数为年、月、日等多个整数时,年和月是不能省略的,其他参数都可以省略的
9. RegExp对象
exec 和 match 方法的异同?
- 都是用来返回匹配结果。如果发现匹配,就返回一个数组,成员是匹配成功的子字符串,否则返回null
- exec方法的返回数组还包含以下两个属性:
- input:整个原字符串。
- index:整个模式匹配成功的开始位置(从0开始计数)。
不同:
- exec是RegExp对象的实例方法, match是字符串对象的实例方法。
- 如果正则表达式带有g修饰符,match会一次性返回所有匹配成功的结果;而exec则可以使用多次exec方法,下一次搜索的位置从上一次匹配成功结束的位置开始,如果想完成全部匹配,需要用循环。
- 调用exec方法的正则表达式中设置了g修饰符的时候,只要手动设置了lastIndex的值,就会从指定位置开始匹配;但lastIndex属性对match方法无效,匹配总是从字符串的第一个字符开始
有哪些预定义模式?
预定义模式指的是某些常见模式的简写方式。
- \d 匹配0-9之间的任一数字,相当于[0-9]。
- \D 匹配所有0-9以外的字符,相当于[^0-9]。
- \w 匹配任意的字母、数字和下划线,相当于[A-Za-z0-9_]。
- \W 除所有字母、数字和下划线以外的字符,相当于[^A-Za-z0-9_]。
- \s 匹配空格(包括换行符、制表符、空格符等),相等于[ \t\r\n\v\f]。
- \S 匹配非空格的字符,相当于[^ \t\r\n\v\f]。
- \b 匹配词的边界。
- \B 匹配非词边界,即在词的内部。
10. JSON 对象
JSON 对值的类型和格式规定?
- 复合类型的值只能是数组或对象,不能是函数、正则表达式对象、日期对象。
- 原始类型的值只有四种:字符串、数值(必须以十进制表示)、布尔值和null(不能使用NaN, Infinity, -Infinity和undefined)。
- 字符串必须使用双引号表示,不能使用单引号。
- 对象的键名必须放在双引号里面。
- 数组或对象最后一个成员的后面,不能加逗号。
JSON对象的两个静态方法
- JSON.stringify()
- 将一个值转为 JSON 字符串; *注意:对于原始类型的字符串,转换结果会带双引号
- 如果对象的属性是undefined、函数或 XML 对象,该属性会被JSON.stringify过滤
- 如果数组的成员是undefined、函数或 XML 对象,则这些值被转成null
- 正则对象会被转成空对象
- JSON.stringify方法会忽略对象不可遍历的属性
- JSON.parse()
- 将 JSON 字符串转换成对应的值
- 如果传入的字符串不是有效的 JSON 格式,JSON.parse方法将报错