文章目录
  1. 1. 对我而言比较重要的特性
  2. 2. 第三章
    1. 2.1. 类型转换
  3. 3. 第五章
  4. 4. 第六章-对象
    1. 4.1. 几个重要的点
      1. 4.1.1. 几个重要的方法
  5. 5. 第七章-数组
  6. 6. 第八章-方法
  7. 7. 第九章-类

对我而言比较重要的特性

  • ECMAScript 是语言标准( ECMA = 欧洲计算机制造协会)
  • 除号(“/“)
  • 通过var声明对象
  • 分号(“;”)
  • 两种数据类型
    1. 原始类型
    2. 对象类型
  • “$”表示私有
  • 几种特殊”型号”,[+|-]Infinity,NaN,null(object),undefine
  • null==undefine but null!===undefine
  • 有自己的内存管理机制(自动对内存进行垃圾回收)
  • 不区分整数浮点数
  • 被零整除不报错
  • 非数字值和任何值都不相等包括自身
  • 并非块作用域,而是函数作用域,且声明提前(预编译的时候进行)
  • 作用域链
  • delete 后长度不变(var 声明的无法删除)
  • 只有在查询属性时才会体会到继承的存在,而设置属性则和继承无关.(让程序员可以有选择地覆盖继承的属性)
  • null 和 undefine 均无属性
  • 数据属性4特性:值/枚举性/可配置性/可写性
  • 存取器属性4特性:读取/写入/可配置性/可写性
  • 三种创建对象的方式
    1. 对象直接量 : var
    2. new +构造函数
    3. Object.create()
  • JSON = JavaScript Object Notation
  • 日期,正则, error对象和 undefine 值无法序列化和还原
  • date 无法还原 ; Nan 和 [+|-]Infinity 序列化结果为 null

第三章

类型转换

第五章

  • debugger
  • “use strict”   

第六章-对象

第六章很重要,需要精读,这里先简单标记下

几个重要的点

  1. 继承的规则
  2. 属性访问错误
  3. 属性的 getter&setter
  4. 属性的特性
  5. 对象三属性
    • 原型
    • 可扩展性
  6. 序列化对象

几个重要的方法

  1. hasOwnProperty()
  2. propertyIsEnumberable()
  3. isPrototypeOf()
  4. Object.create()
  5. Object.getPrototypeOf()

第七章-数组

  1. 索引不一定连续
  2. array[something]这个 someting 为数字的话是在0~2^32-2
  3. 所有的索引都是属性名,但是只有0~2^32-2之间的整数才是索引.
1
2
3
a[-1.23]=true; //这将创建一个名为"-1.23"的属性
a[1.000]=0; //这是数组的第1001个元素
a["1000"]; //与 a[1]相等
  1. 数组里面的东西很随便…意思是什么类型都可以
  2. 无越界概念, 查询的对象不存在的话得到 undefined
  3. 省略的元素和数组元素根本不存在是有区别的
  4. Array.prototype 中定义的一些很有用的操作数组函数
    • join();
    • reverse();
    • sort();
    • concat();
    • slice(); //可负号
    • splice();
    • push();
    • pop();
    • unshift();
    • shift();
    • toString();
  5. EMCAScript 5中的大多数数组方法的第一个参数接收一个函数function(数组元素,元素的索引,数组本身)
    • forEach();
    • map();
    • fliter();
    • every(); and some();
  6. 字符串是可读的

第八章-方法

  1. 闭包: JS 的函数可以嵌套在其他函数中定义,这样他们就可以访问它们被定义时所处的作用域中得任何变量./函数定义时的作用域链到函数执行时依然有效.
  2. 函数的名称将成为函数内部的一个局部变量
  3. 表达式方式定义的函数在定义之前无法调用
  4. 内嵌函数的作用域规则
  5. 四种方法调用 JS 函数
  6. 函数判断当前是否为严格模式
return !this;}());```
1
2
3
4
5
6
7
8
9
10
11
12
13
7. 方法的链式调用
8. 嵌套函数里地 this 并不指向调用外层函数的上下文
9. 无形参的构造函数调用可以省略圆括号
10. 构造函数是创建一个新的对象,构造函数的 this 是引用自这个新创建的对象. eg:new o.m()中,o 并不是调用的上下文
11. arguments 指向实参对象的引用
12. callee and caller
13. 函数可以赋值给变量....可以作为数组元素....
14. (function(){}())这里function 的左括号代表立即执行
15. *(function(){}())===(function(){})()?*
16. "当内部函数在定义它的作用域的外部被引用时,就创建了该内部函数的一个闭包。这种情况下我们称既不是内部函数局部变量,也不是其参数的变量为自由变量,称外部函数的调用环境为封闭闭包的环境。从本质上讲,如果内部函数引用了位于外部函数中的变量,相当于授权该变量能够被延迟使用。因此,当外部函数调用完成后,这些变量的内存不会被释放(最后的值会保存),闭包仍然需要使用它们"*from*[javascript 闭包究竟是什么][1]and推荐[JavaScript作用域链][2]
17. 用闭包实现私有属性存取方法
18. 严重感觉 js 的"小约定"很多,debug 能力直接和大量的实践经验挂钩
19. call() and apply()
   f.call(o);    
   f.apply(o);   
1
以下代码和上面每行代码功能一样

java
o.m = f ;
o.m();
delete o.m;
```

  1. monkey-patching:新的方法是”包裹”原始方法的另一个泛函数
  2. bind()
  3. currying(柯里化) :传入bing 的实参会绑定至this
  4. 运行时动态地创建并编译函数:function 构造函数,作用域要注意
  5. 8.7&8.8得再看一遍(:з」∠)

第九章-类

文章目录
  1. 1. 对我而言比较重要的特性
  2. 2. 第三章
    1. 2.1. 类型转换
  3. 3. 第五章
  4. 4. 第六章-对象
    1. 4.1. 几个重要的点
      1. 4.1.1. 几个重要的方法
  5. 5. 第七章-数组
  6. 6. 第八章-方法
  7. 7. 第九章-类