本章内容集合引用类型(对象、数组与定型数组、Map、WeakMap、
Set以及WeakSet类型)

  • Object
    显式创建Object的实例方式有两种:
    使用new操作符和object构造函数
let obj = new Object()

或者对象字面量表示法

let obj = {name: 'haha',age: 15
}
  • Array
    创建数组方式:
let arr = new Array()
let arr = []

ES6新增:Array.from()、Array.of()

console.log(Array.from("Matt")); // ["M", "a", "t", "t"]
console.log(Array.of(1, 2, 3, 4)); // [1, 2, 3, 4]

数组空位:数组是可以有空位的

const options = [,,,,,]; // 创建包含 5 个元素的数组
console.log(options.length); // 5
console.log(options); // [,,,,,]

数组索引:数组是有顺序的,可按照下标找到对应的值,下标从0开始。

如何判断是不是数组:
1、Array.isArray(),返回true or false【ES5】
2、instanceof
3、Object.prototype.toString.call() === ‘[object Array]’

isArray 优于 instanceof;
不支持isArray【es5】 可用Object.prototype.toString.call() === '[object Array]'代替

迭代器方法:keys()、values()和entries()。

const a = ["foo", "bar", "baz", "qux"];
// 因为这些方法都返回迭代器,所以可以将它们的内容
// 通过 Array.from()直接转换为数组实例
const aKeys = Array.from(a.keys());
const aValues = Array.from(a.values());
const aEntries = Array.from(a.entries());
console.log(aKeys); // [0, 1, 2, 3]
console.log(aValues); // ["foo", "bar", "baz", "qux"]
console.log(aEntries); // [[0, "foo"], [1, "bar"], [2, "baz"], [3, "qux"]]

复制和填充方法
批量复制方法copyWithin(),以及填充数组方法fill()

  • 转换方法

  • 栈方法(后进先出)

    shift()取第一项,pop()取最后一项

  • 队列方法(先进先出)
    - 排序方法

    reverse()逆排序,sort()按照字符串形式排序

  • 操作方法
    concat()拼接数组

    可用Symbol.isConcatSpreadable强制不打平数组

    slice()拆分元素,返回新数组

    splice(),最强大的数组方法,可实现删除、插入、替换

    ECMAScript 提供了 3 个严格相等的搜索方法:indexOf()、lastIndexOf()和 includes()

    断言函数:find()和findIndex(),返回搜索的元素和索引

    迭代方法

    • every()
      对数组每一项进行判断,若每项都符合返回true,反之返回false
    • some() 对数组每一项进行判断,若有一项符合就返回true,反之返回false
    • filter()
      对每一项进行判断,数组形式返回符合条件的元素
    • forEach() 遍历数组的每一项
    • map() 遍历数组的每一项
    • 归并方法
      reduce()和reduceRight(),reduce()从第一项开始遍历合并完最后一项,reduceRight()从最后一项合并到第一项。
  • 定型数组(另一种形式的ArrayBuffer视图)

    • 合并、复制和修改

      • concat() 合并数组
      • pop() 取最后一项
      • push() 末尾插入元素
      • shift() 取第一项
      • splice() 替换、修改
      • unshift() 头部插入元素
      • set() 、subarray() 快速向外或向内复制数据
  • Map


    可用set()添加键/值

    可用get()、has()查询映射

  • WeakMap 弱映射

  • Set (ES6新增)很多方面类似“加强的Map"

    同理拥有 WeakSet 弱集合

小结

  • 有 3 种原始值:Boolean、Number 和 String。
  • Object 类型是一个基础类型,所有引用类型都从它继承了基本的行为。
  • Array 类型表示一组有序的值,并提供了操作和转换值的能力。
  • Date 类型提供了关于日期和时间的信息,包括当前日期和时间以及计算。
  • RegExp 类型是 ECMAScript 支持的正则表达式的接口,提供了大多数基本正则表达式以及一些高级正则表达式的能力。
  • 定型数组包含一套不同的引用类型,用于管理数值在内存中的类型。
  • 内置对象:Global 和 Math。浏览器将 Global 实现为 window 对象。所有全局
    变量和函数都是 Global 对象的属性。Math 对象包含辅助完成复杂数学计算的属性和方法。
  • ECMAScript 6 新增了一批引用类型:Map、WeakMap、Set 和 WeakSet。

JavaScript高级程序设计(第4版)学习随笔【第六章】相关推荐

  1. JavaScript高级程序设计第四版学习--第二十四章

    title: JavaScript高级程序设计第四版学习–第二十四章 date: 2021-5-31 10:46:01 author: Xilong88 tags: JavaScript 本章内容: ...

  2. JavaScript高级程序设计红宝书学习笔记第三章基本概念

    第三章 基本概念 本章内容 语法 数据类型 操作符 语句 函数 3.1 语法 3.1.1 区分大小写,ECMAScript中的一切(变量.函数名和操作符)都区分大小写. 3.1.2 标识符 标识符:变 ...

  3. JavaScript高级程序设计第三版.CHM【带实例】

    从驱动全球商业.贸易及管理领域不计其数的复杂应用程序的角度来看,说 JavaScript 已经成为当今世界上最流行的编程语言一点儿都不为过. JavaScript 是一种非常松散的面向对象语言,也是 ...

  4. JavaScript高级程序设计[第3版]

    JavaScript高级程序设计[第3版] package xyz.huning.toolkit.pdf;import java.io.FileOutputStream; import java.io ...

  5. Js高级程序设计第三版学习(十二章)

                                  Js高级程序设计第三版学习(十二章) 第十二章 DOM2和DOM3   1.样式: 访问样式属性 任何支持style特性的HTML元素都有一 ...

  6. JavaScript高级程序设计 第4版----String

    JavaScript高级程序设计 第4版----String 文章目录 JavaScript高级程序设计 第4版----String 1.JavaScript 字符 2.字符串操作方法 1.conca ...

  7. javascript高级程序设计 第三版

    网盘地址 提取码:vh81 笔记 第二章 2.1script标签 <script>元素属性:async.charset.defer.language.src.type async和defe ...

  8. javascript高级程序设计第3版——第6章 面向对象的程序设计

    第六章--面向对象的程序设计 这一章主要讲述了:面向对象的语言由于没有类/接口情况下工作的几种模式以及面向对象语言的继承: 模式:工厂模式,构造函数模式,原型模式 继承:原型式继承,寄生式继承,以及寄 ...

  9. 《JavaScript高级程序设计 第3版》-学习笔记-1

    P1-P30页 1.<script>标签的属性 async:async(html)  | async="async"(xhtml),表示立即下载脚本,但不马上执行(执行 ...

  10. 新书-JavaScript高级程序设计:第2版(预订中,估价)

    http://www.china-pub.com/196857 JavaScript的应用在广度和深度上日益扩大和加深,前端开发亟待掌握的JavaScript技能也越来越具有挑战性. 这个新版本几乎全 ...

最新文章

  1. 了解Android Matrix转换
  2. 3d饼图 vue_Vue+Echarts构建可视化大数据平台实战项目分享(附源码)(上)
  3. c语言二fseek从文件头移动_编程C语言文件的随机读写
  4. JavaWeb -- Struts2 ResultType细化, 国际化
  5. php如何编造简历,在简历里编造内容需要注意哪些问题?
  6. FlashBuilder 4.5 安装图解
  7. zabbix 系统IO监控_自动发现
  8. python基础代码大全-Python网络爬虫实战项目代码大全(长期更新,欢迎补充)
  9. C++通过Wininet库提交POST信息登录到PHPChina中文开发者社区
  10. 倾斜摄影 实景三维建模软件photoscan教程
  11. 力扣题目系列:121. 买卖股票的最佳时机
  12. 电路设计实例:232 DB9接口 引脚定义
  13. 备战BAT面试-死磕mysql|mysql 是如何做到存储两千万数据毫无压力的?
  14. 三角函数中和差角公式的编辑方法
  15. 批量将txt文件转为csv文件
  16. space-between时尾行排版优化
  17. Web页面无法执行CGI的exe程序
  18. 火车采集器如何采集ajax数据和百度站内搜索数据
  19. mac开启Airdrop的硬件要求
  20. 网页连接服务器失败是怎么回事,网页怎么连接服务器失败是怎么回事

热门文章

  1. 最长合法括号子序列(括号序列+贪心)
  2. Pycharm debug崩溃、长时间不响应 解决
  3. 【路科V0】systemVerilog基础11——随机变量
  4. 科普操作系统与芯片那些事儿
  5. siss编程--C语言--三子棋
  6. twitter账户受限_如何为您的企业设置Twitter帐户
  7. 基于jQuery的鼠标右键菜单
  8. 你又知不知道,日有所思,夜有所梦。
  9. latex 中手写l的输入方法
  10. 怎么用python画世界地图_用Python画世界地图