第七章 数组
1 数组的实现是经过优化的,用数字索引来访问数组元素一般来说比访问常规的对象属性要快的多。
2 数组直接量的语法允许有可选的结尾的逗号,故[ ; ; ]只有两个元素而非三个。
3 调用构造函数创建数组
    a 调用时没有参数 => 空数组
    b 调用时有一个数值参数 => 指定长度的数组
    c 显式指定两个或多个数组元素或一个非数值元素 => 参数成为新数组的元素
4 稀疏数组:包含从0开始的不连续索引(即 '索引值' in '数组' 运算返回 false)的数组。可以用Array构造函数或简单地指定数组的索引值大于当前的数组长度或用delete运算符来创建稀疏数组。
5 数组元素的添加和删除
    a 为新索引赋值
    b push unshift(头尾插入)
    c pop shift(头尾删除)
    d splice(startIndex, deleteCount, insertItems...) 插入、删除或替换
6 数组常用方法(红色标注方法会改变原数组结构):
    a join() 将数组中所有元素都转化为字符串并连接在一起,返回最后生成的字符串;
    b reverse() 将数组中的元素颠倒顺序;
    c sort() 将数组中的元素排序并返回排序后的数组;
    d concat() 创建并返回一个新数组;
    e slice() 返回指定数组的一个片段或子数组;
    f splice() 在数组中插入或删除元素;
    g push() unshift() pop() shift() 注意,当使用多个参数调用unshift()时,参数是一次性插入的(类似splice方法);
7 ES5数组方法(第一个参数接收一个函数,对数组的每个元素调用一次该函数,如果是稀疏数组,对不存在的元素不调用传递的函数):
    forEach() map() 
    filter() 注意:filter会跳过稀疏数组缺少的元素,它的返回数组总是稠密的;
    every() some() 注意:在空数组上调用时,every返回true,some返回false;
    reduce() reduceRight() 注意:在空数组上,不带初始值参数调用reduce将导致类型错误异常;
    indexOf() lastIndexOf() 搜索整个数组中具有给定值的元素,返回找到的第一个元素的索引或者如果没有找到返回-1
8 Array.isArray() 或者 Object.prototype.toString.call()
9 一种常常完全合理的看法把拥有一个数值length属性和对应非负整数属性的对象看做一种类型的数组。
 
第八章 函数
1 以表达式方式定义的函数。函数的名称的可选的,一条函数声明语句实际上声明了一个变量,并把一个函数对象赋值给它。如果一个函数定义表达式包含名称,函数的局部作用域会包含一个绑定到函数对象的名称。实际上,函数的名称将成为函数内部的一个局部变量。
2 函数调用的方式
    a 函数调用
    b 方法调用
    c 构造函数调用
    d call() 和 apply() 间接调用
3 函数调用的调用上下文在非严格模式下,是全局对象,在严格模式下,是undefined。这种模式的区分经常看到,比如call或者apply的第一个参数。定义并调用一个函数来确定当前脚本运行时是否为严格模式
    var strict = function () { return !this; }
4 关键字this没有作用域的限制,嵌套的函数不会从调用它的函数中继承this。如果嵌套函数作为方法调用,其this的值指向调用它的对象;如果嵌套函数作为函数调用,其this值不是全局对象就是undefined。
5 凡是没有形参的构造函数调用都可以省略圆括号。
6 如果构造函数使用return语句,没有返回值,或者返回一个原始值,那么将忽略返回值,同时使用这个新对象作为调用结果。
7 ECMA规定,arguments对象callee属性指代当前正在执行的函数,caller是非标准的,指代调用当前正在执行的函数的函数。
8 函数的执行依赖于变量作用域,这个作用域是在函数定义时决定的,而不是函数调用时决定的。这解释了,函数返回,属性中包含多个函数的对象,共享同一个作用域链。
9 在函数体内,arguments.length表示传入函数的实参的个数;而函数本身的length属性代表函数形参的数量。
10 传入apply() 的参数数组可以是类数组对象也可以是真实数组。
11 真正的bind() 方法返回一个函数对象,它的length属性是绑定函数的形参个数减去绑定实参的个数。
12 Function构造函数,最后一个实参所表示的文本就是函数体。函数体的代码编译总是会在顶层函数执行。
 
第九章 类和模块
1 原型对象是类的唯一标识:当且仅当两个对象继承自同一个原型对象时,它们台式属于同一个类的实例。两个不同的构造函数,可能它们的原型prototype指向同一个对象,那么它们所创造的实例是属于同一个类的。
2 instanceof 不会检查实例是否有构造函数初始化而来,而是检查实例是否继承自构造函数的原型prototype。
3 鸭式辩形:不要关注 对象的类是什么,而是关注 对象能做什么。
4 一般来讲,模块是一个独立的JS文件。模块文件可以包含一个类定义、一组相关的类、一个实用的函数库或者一些待执行的代码。
 

JS权威指南读书笔记(三)的更多相关文章

  1. JS权威指南读书笔记(七)

    第十七章 事件处理 1 客户端JS程序采用了异步事件驱动编程模型. 2 关于事件的重要定义     a 事件类型(event type)     b 事件目标(event target) target ...

  2. JS权威指南读书笔记(一)

    第一章 JavaScript概述 1 JS是一门高端的.动态的.弱类型的编程语言,非常适合面向对象和函数式的编程风格.   第二章 词法结构 1 JS程序是用Unicode字符集编写的. 2 JS是区 ...

  3. JS权威指南读书笔记(六)

    第十五章 脚本化文档   1 文档对象模型(DOM)是表示和操作HTML和XML文档内容的基础API. 2 文档节点的部分层次结构 Text和CDATASection都是characterData的子 ...

  4. JS权威指南读书笔记(五)

    第十三章 Web浏览器中的JavaScript 1 在Html文档中嵌入客户端4种JS代码方法     a 内联方式,放置在<script>标签之间     b 放置在<script ...

  5. JS权威指南读书笔记(二)

    第四章 表达式和运算符 1 new调用构造函数的过程     a 创建一个新的空对象     b 设置空对象的_proto_指向构造函数原型prototype     c 将这个新对象当做this的值 ...

  6. JS权威指南读书笔记(四)

    第十章 正则表达式 1 正则表达式直接量定义为包含在一对斜杠(/)之间的字符     a /s$/ == new RegExp("s$") 2 直接量字符:所有字母和数字都是按照字 ...

  7. HTTP权威指南读书笔记

    HTTP权威指南笔记 读书有两种境界,第一种境界是将书读薄,另一种是读厚.本篇文章就是HTTP权威指南的读书笔记,算是读书的第一重境界,将厚书读薄.文章对HTTP的一些关键概念做了比较详细的概述,通读 ...

  8. css权威指南读书笔记

    今天翻手机,翻到了许久之前看css权威指南时的笔记,遂移到博客中来. 1.属性选择器p.one class名为one的p元素p[class][name] 含有class和name属性的p元素p[cla ...

  9. Hadoop权威指南学习笔记三

    HDFS简单介绍 声明:本文是本人基于Hadoop权威指南学习的一些个人理解和笔记,仅供学习參考.有什么不到之处还望指出,一起学习一起进步. 转载请注明:http://blog.csdn.net/my ...

随机推荐

  1. ArrayAdapter和ListView

    利用ArrayAdapter向ListView中添加数据 <?xml version="1.0" encoding="utf-8"?> <Li ...

  2. Spring cloud微服务安全实战-6-1本章概述

    这一章来讲一下,微服务之间的通讯安全. 当前这个架构还存在的问题 在网关上做限流还是有一些问题的.例如我的订单服务限流是100,库存服务限流也是100.但是我的订单服务会调用我的库存服务.那么在网关这 ...

  3. Qt编写气体安全管理系统9-数据查询

    一.前言 数据查询模块在整个系统中难度最低,由于Qt对数据库操作的封装堪称完美,所以各种查询都是手到擒来,不费吹灰之力.Qt中内置了sqlite数据库,你可以在数据库插件目录sqldrivers发现q ...

  4. C语言中结构体的构造函数

    示例代码: #include <iostream> using namespace std; struct Node { int x, y, z; Node(int _x, int _y, ...

  5. git 操作说明

    第一步:代码提交到本地仓库 第二步:更新远程服务器代码到本地,如果有冲突需要优先解决,解决冲突后执行第一步操作 第三步:推送本地代码到远程服务器,可以使用source Tree 或者工具自带的配置gi ...

  6. 08点睛Spring4.1-Profile

    8.1 Profile Profile让在不同环境下使用不同的配置提供了支持(如开发环境下的配置和生产环境下的配置肯定是不同的,如:数据库的配置); 通过设定Environment的ActivePro ...

  7. Swoole练习 UDP

    UDP 服务代码 <?php //创建Server对象,监听 127.0.0.1:9502端口,类型为SWOOLE_SOCK_UDP $serv = new swoole_server(&quo ...

  8. Jira 自定义工作流并设置触发器

    一.添加修改工作流 打开 设置--问题--工作流 复制一个工作流,然后进去编辑页面 添加状态 增加转换动作 切换到文本,设置跳转过程中的事件 针对Stop Progress事件,修改跳转界面(界面需先 ...

  9. 洛谷 题解 P2540 【斗地主增强版】

    [分析] 暴力搜顺子,贪心出散牌 为什么顺子要暴力? 玩过斗地主的都知道,并不是出越长的顺子越好,如果你有一组手牌,3,4,5,6,7,6,7,8,9,10,你一下把最长的出了去,你会单两张牌,不如出 ...

  10. 在ensp上简单的配置交换机

    在ensp中我们经常用到交换机,但是我们还没有配置过,下面我们来学习一下怎样简单的配置交换机的速率,双工模式等. 全双工:同时发送和接收数据  半双工:只能在一个时间做一件事     速率:交换机每秒 ...