回味JS(四)JS内置对象

上一篇文章开始讲到JS的内置对象,本篇继续上一篇的内容。

4. Boolean对象

Boolean作为构造函数和普通函数的使用有什么不同?

  1. 作为构造函数,它主要用于生成布尔值的包装对象实例,即生成值的类型是对象,值为布尔值
  2. 作为普通函数,它就是一个单纯的工具方法,将任意值转为布尔值

正因为第一条,一些特殊值,Boolean对象前面加不加new,会得到完全相反的结果,必须小心。如new Boolean(false)的值实际上是true。

5. Number对象

Number对象有哪些实例方法?

  1. toString: 用来将一个数值转为字符串形式;

注意:toString方法可以接受一个参数,表示输出的进制。如果省略这个参数,默认将数值先转为十进制,再输出字符串;否则,就根据参数指定的进制,将一个数字转化成某个进制的字符串

  1. toFixed: 先将一个数转为指定位数的小数,然后返回这个小数对应的字符串

注意:由于浮点数的原因,小数5的四舍五入是不确定的

  1. toExponential: 将一个数转为科学计数法形式
  2. toPrecision: 将一个数转为指定位数的有效数字

6. String对象

slice和substring,substr的异同?

  1. slice从原字符串取出子字符串并返回,不改变原字符串,
    • 第一个参数是子字符串的开始位置,第二个参数是子字符串的结束位置
    • 如果省略第二个参数,则表示子字符串一直到原字符串的结束
    • 如果参数是负值,表示从结尾开始倒数计算的位置
    • 如果第一个参数大于第二个参数,slice方法返回一个空字符串
  2. substring从原字符串取出子字符串并返回,不改变原字符串
    • 第一个参数表示子字符串的开始位置,第二个位置表示结束位置
    • 如果省略第二个参数,则表示子字符串一直到原字符串的结束
    • 如果参数是负数,substring方法会自动将负数转为0
    • 如果第一个参数大于第二个参数,substring方法会自动更换两个参数的位置
  3. 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的构造函数和普通函数的用法?

  1. 作为普通函数直接调用,返回一个代表当前时间的字符串,即使带有参数,返回的仍然是当前时间的字符串
  2. 作为构造函数使用,返回一个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对象的两个静态方法

  1. JSON.stringify()
    • 将一个值转为 JSON 字符串; *注意:对于原始类型的字符串,转换结果会带双引号
    • 如果对象的属性是undefined、函数或 XML 对象,该属性会被JSON.stringify过滤
    • 如果数组的成员是undefined、函数或 XML 对象,则这些值被转成null
    • 正则对象会被转成空对象
    • JSON.stringify方法会忽略对象不可遍历的属性
  2. JSON.parse()
    • 将 JSON 字符串转换成对应的值
    • 如果传入的字符串不是有效的 JSON 格式,JSON.parse方法将报错
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,558评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,002评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,024评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,144评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,255评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,295评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,068评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,478评论 1 305
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,789评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,965评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,649评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,267评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,982评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,223评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,800评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,847评论 2 351

推荐阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,226评论 0 4
  •   引用类型的值(对象)是引用类型的一个实例。   在 ECMAscript 中,引用类型是一种数据结构,用于将数...
    霜天晓阅读 1,045评论 0 1
  • Array对象 Array是 JavaScript 的原生对象,同时也是一个构造函数,可以用它生成新的数组。Arr...
    guyigg阅读 2,137评论 0 2
  • 概述 String对象是JavaScript原生提供的三个包装对象之一,用来生成字符串的包装对象。 上面代码中,变...
    许先生__阅读 167评论 0 1
  • String对象是JavaScript原生提供的三个包装对象之一,用来生成字符串的包装对象。 上面代码中,变量s1...
    zjh111阅读 575评论 0 0