ajax
- 简介
- Asynchronous JavaScript and XML
- Web的运作原理
- 一次HTTP请求对应一个页面
- ajax
- 让用户留在当前页面中,同时用js发出新的HTTP请求
- AJAX请求是异步执行的,要通过回调函数获得响应
- 在现代浏览器上写AJAX主要依靠XMLHttpRequest对象:
- JavaScript
- 简介
- ECMAScript
- 一种语言标准
- JavaScript是网景公司对ECMAScript标准的一种实现
- ECMAScript
- 入门
- JavaScript代码放到<head>中
- 法一
- 由<script>...</script>包含
- e.g.
<html><head><script>alert('Hello, world'); </script></head><body> ... </body></html>
- 法二
- 把JavaScript代码放到一个单独的.js文件
- e.g.
<html><head><script src="/static/js/abc.js"></script></head><body> ... </body></html>
- 可以在同一个页面中引入 / 编写多个.js文件,浏览器按照顺序依次执行。
- Map
- “名字”-“成绩”的对照表
- 直接根据名字查找成绩,无论这个表有多大,查找速度都不会变慢。
- e.g.
var m = new Map(); // 空Mapm.set('Adam', 67); // 添加新的key-valuem.set('Bob', 59);m.has('Adam'); // 是否存在key 'Adam': truem.get('Adam'); // 67m.delete('Adam'); // 删除key 'Adam'm.get('Adam'); // undefined - 多次对一个key放入value,后面的值会把前面的值冲掉
- Set
- 一组key的集合,但不存储value
- 由于key不能重复,所以,在Set中,没有重复的key
- 重复元素在Set中自动被过滤
- 可以重复添加,但不会有效果
- 数字3和字符串'3'是不同的元素
- e.g.
var s = new Set([1, 2, 3, 3, '3']);s; // Set {1, 2, 3, "3"}
- Iterable
- 遍历 for ... of
- 遍历Array可以采用下标循环
- 遍历Map和Set无法使用下标
- Array、Map和Set都属于iterable类型。
- 具有iterable类型的集合可以通过新的for ... of循环来遍历
- 只循环集合本身的元素
- e.g.
var m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]);for (var x of m) { // 遍历Map console.log(x[0] + '=' + x[1]);}
- 遍历Array可以采用下标循环
- for ... in
- 遍历对象的属性名称
- Array的length属性不包括在内
- 一个Array数组实际上也是一个对象,它的每个元素的索引被视为一个属性。
- e.g. 手动给对象添加额外属性
var a = ['A', 'B', 'C'];a.name = 'Hello';for (var x in a) { console.log(x); // '0', '1', '2', 'name'}
- 遍历对象的属性名称
- forEach
- e.g. array
'use strict';var a = ['A', 'B', 'C'];a.forEach(function (element, index, array) { // element: 指向当前元素的值 // index: 指向当前索引 // array: 指向Array对象本身 console.log(element + ', index = ' + index);}); - e.g. set
var s = new Set(['A', 'B', 'C']);s.forEach(function (element, sameElement, set) { console.log(element);});- Set没有索引 => 回调函数的前两个参数都是元素本身
- e.g. Map
var m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]);m.forEach(function (value, key, map) { console.log(value);});
- e.g. array
- function
- 定义
function abs(x) { if (typeof x !== 'number') { throw 'Not a number'; } if (x >= 0) { return x; } else { return -x; }}- abs() => 函数对象
- 函数名abs => 指向该函数的变量
- arguments
- 只在函数内部起作用
- 指向当前函数的调用者传入的所有参数
- 即使函数不定义任何参数,还是可以拿到参数的值
- arguments类似Array但它不是一个Array
- rest
- e.g.
function foo(a, b, ...rest) { console.log('a = ' + a); console.log('b = ' + b); console.log(rest);}foo(1, 2, 3, 4, 5);// 结果:// a = 1// b = 2// Array [ 3, 4, 5 ]foo(1);// 结果:// a = 1// b = undefined// Array [] - 如果传入的参数连正常定义的参数都没填满,rest参数会接收一个空数组
- 注意不是undefined
- e.g.
- 定义
- 遍历 for ... of
- 简介