ECMAScript5,6,7从基本语法到高级函数

 

尚硅谷ES5_6_7教程

(01. 尚硅谷_ECMAScript入门介绍&)

01. 尚硅谷_ECMAScript入门介绍&




  
  ECMAScript理解








(02. 尚硅谷_ES5_严格模式&)

02. 尚硅谷_ES5_严格模式

雅阁模式禁止自定义函数中的this指向window

必须要使用var声明变量

创建eval作用域

对象不能有重名属性

 


  
  01_严格模式







ECMAScript5,6,7从基本语法到高级函数_第1张图片

new时候this指向实例对象

ECMAScript5,6,7从基本语法到高级函数_第2张图片

eval定义的变量没有自己的作用域

(03. 尚硅谷_ES5_json对象扩展&)

03. 尚硅谷_ES5_json对象扩展&




  
  02_JSON对象





ECMAScript5,6,7从基本语法到高级函数_第3张图片

(04. 尚硅谷_ES5_Object对象方法扩展&)

04. 尚硅谷_ES5_Object对象方法扩展&

原型里面的属性可以被继承

ECMAScript5,6,7从基本语法到高级函数_第4张图片

ECMAScript5,6,7从基本语法到高级函数_第5张图片

defineProperties扩展属性

ECMAScript5,6,7从基本语法到高级函数_第6张图片




  
  03_Object扩展





对象本身两个方法回调

ECMAScript5,6,7从基本语法到高级函数_第7张图片




    
    Title





(05. 尚硅谷_ES5_数组的扩展&)

05. 尚硅谷_ES5_数组的扩展&

prototype给实例增加属性

ECMAScript5,6,7从基本语法到高级函数_第8张图片




  
  04_Array扩展





(06. 尚硅谷_ES5_call,apply,bind用法详解&)

06. 尚硅谷_ES5_call,apply,bind用法详解&

强制绑定this

foo.apply(obj,33) obj调用foo传递33参数,bind的this是调用的obj而不是window




  
  05_Function扩展





ECMAScript5,6,7从基本语法到高级函数_第9张图片

(07. 尚硅谷_ES6_let const关键字&)

07. 尚硅谷_ES6_let const关键字&

不能重复声明,不存在var提升

ECMAScript5,6,7从基本语法到高级函数_第10张图片

ECMAScript5,6,7从基本语法到高级函数_第11张图片

ECMAScript5,6,7从基本语法到高级函数_第12张图片




  
  01_let关键字










  
  02_const关键字





(08. 尚硅谷_ES6_变量的解构赋值&)

08. 尚硅谷_ES6_变量的解构赋值&

解构的目标是对象,只能以对象来接收,对象中可以设置属性,{}相当于全局变量usernam必须是本来对象的属性obj.xxx

只需要一部分数据

ECMAScript5,6,7从基本语法到高级函数_第13张图片

数组的解构赋值,根据下标一一对应,与写的什么没有关系

直接使用,在函数内部声明了username与age直接使用即可。




  
  03_变量的解构赋值





(09. 尚硅谷_ES6_模板字符串&)

09. 尚硅谷_ES6_模板字符串&

ECMAScript5,6,7从基本语法到高级函数_第14张图片




  
  04_模板字符串





(10. 尚硅谷_ES6_对象的简写方式&)

10. 尚硅谷_ES6_对象的简写方式&

如果key与value一样,可以省略一个

ECMAScript5,6,7从基本语法到高级函数_第15张图片

去掉:和function

ECMAScript5,6,7从基本语法到高级函数_第16张图片




  
  05_简化的对象写法





(11. 尚硅谷_ES6_箭头函数详解&)

11. 尚硅谷_ES6_箭头函数详解&

ECMAScript5,6,7从基本语法到高级函数_第17张图片

只有一条语句和表达式要省略大括号,自动返回计算结果

多条语句必须return要返回结果

箭头函数所处的对象就是this

ECMAScript5,6,7从基本语法到高级函数_第18张图片




  
  06_箭头函数



    
    






ECMAScript5,6,7从基本语法到高级函数_第19张图片

与外层函数的this一样,常规函数this谁调用它this就是谁

ECMAScript5,6,7从基本语法到高级函数_第20张图片

外面是箭头函数,此时的this就是window

ECMAScript5,6,7从基本语法到高级函数_第21张图片

本质在window下定义的箭头函数

ECMAScript5,6,7从基本语法到高级函数_第22张图片

(12. 尚硅谷_ES6_三点运算符&)

12. 尚硅谷_ES6_三点运算符&

argument是伪数组不具备数组一般属性,value可以遍历比arguments方便

ECMAScript5,6,7从基本语法到高级函数_第23张图片

ECMAScript5,6,7从基本语法到高级函数_第24张图片

少了一个占位符2




  
  07_3点运算符






ECMAScript5,6,7从基本语法到高级函数_第25张图片

把2,3,4,5放在1,6中间

...arr不是一个数组

(13. 尚硅谷_ES6_形参默认值&)

13. 尚硅谷_ES6_形参默认值&

ECMAScript5,6,7从基本语法到高级函数_第26张图片




  
  08_形参默认值






(14. 尚硅谷_ES6_promise对象原理详解&)

14. 尚硅谷_ES6_promise对象原理详解&

Promise是同步执行,同步阻塞,同步函数中执行异步操作

ECMAScript5,6,7从基本语法到高级函数_第27张图片

成功调用resolve(),.then()有两个回调,根据promise返回的状态执行成功的回调与失败的回调

ECMAScript5,6,7从基本语法到高级函数_第28张图片

根据状态码成功resolve返回第一个回调

ECMAScript5,6,7从基本语法到高级函数_第29张图片

ECMAScript5,6,7从基本语法到高级函数_第30张图片

ECMAScript5,6,7从基本语法到高级函数_第31张图片




  
  11_Promise对象








 

ECMAScript5,6,7从基本语法到高级函数_第32张图片

get请求的参数是查询字符串req.query.id,post请求参数在请求体  req.query.body

var express = require('express');
var router = express.Router();

/* GET home page. */
router.get('/', function (req, res, next) {
    res.render('index', {title: 'Express'});
});

router.get('/news', function (req, res, next) {
    res.set('Access-Control-Allow-Origin', '*');
    var id = req.query.id;
    console.log('/news id='+id);
    var news = {
        id: id,
        title: 'news title1...',
        content: 'news content1...',
        commentsUrl: '/comments?newsId='+id
    };
    res.json(news);
});


router.get('/comments', function (req, res, next) {
    res.set('Access-Control-Allow-Origin', '*');
    console.log('/comments newsId=' + req.query.newsId);
    var newsId = req.query.newsId;
    var comments = [
        {
            id: 1,
            content: 'comment content1111...',
            newsId : newsId
        },
        {
            id: 2,
            content: 'comment content2222...',
            newsId : newsId
        }];
    res.json(comments);
});

module.exports = router;

ECMAScript5,6,7从基本语法到高级函数_第33张图片

bin/www

#!/usr/bin/env node

/**
 * Module dependencies.
 */

var app = require('../app');
var debug = require('debug')('es_server:server');
var http = require('http');

/**
 * Get port from environment and store in Express.
 */

var port = normalizePort(process.env.PORT || '3000');
app.set('port', port);

/**
 * Create HTTP server.
 */

var server = http.createServer(app);

/**
 * Listen on provided port, on all network interfaces.
 */

server.listen(port);
server.on('error', onError);
server.on('listening', onListening);

/**
 * Normalize a port into a number, string, or false.
 */

function normalizePort(val) {
  var port = parseInt(val, 10);

  if (isNaN(port)) {
    // named pipe
    return val;
  }

  if (port >= 0) {
    // port number
    return port;
  }

  return false;
}

/**
 * Event listener for HTTP server "error" event.
 */

function onError(error) {
  if (error.syscall !== 'listen') {
    throw error;
  }

  var bind = typeof port === 'string'
    ? 'Pipe ' + port
    : 'Port ' + port;

  // handle specific listen errors with friendly messages
  switch (error.code) {
    case 'EACCES':
      console.error(bind + ' requires elevated privileges');
      process.exit(1);
      break;
    case 'EADDRINUSE':
      console.error(bind + ' is already in use');
      process.exit(1);
      break;
    default:
      throw error;
  }
}

/**
 * Event listener for HTTP server "listening" event.
 */

function onListening() {
  var addr = server.address();
  var bind = typeof addr === 'string'
    ? 'pipe ' + addr
    : 'port ' + addr.port;
  debug('Listening on ' + bind);
}

ECMAScript5,6,7从基本语法到高级函数_第34张图片

可以修改为同步方式

ECMAScript5,6,7从基本语法到高级函数_第35张图片

ECMAScript5,6,7从基本语法到高级函数_第36张图片

ECMAScript5,6,7从基本语法到高级函数_第37张图片

ECMAScript5,6,7从基本语法到高级函数_第38张图片

onreadystatechange发送一次请求调用4次,有5种状态码,初始化为0,发送send为1,200和304成功状态码

获取的data是字符串,需要变为一个对象

ECMAScript5,6,7从基本语法到高级函数_第39张图片

可以继续链式调用

ECMAScript5,6,7从基本语法到高级函数_第40张图片

(16. 尚硅谷_ES6_Symbol属性介绍_01&)

16. 尚硅谷_ES6_Symbol属性介绍_01&

Symbol是原始数据类型,同一个Symbol调用属性值都是唯一值

ECMAScript5,6,7从基本语法到高级函数_第41张图片

对象实例

ECMAScript5,6,7从基本语法到高级函数_第42张图片




  
  Symbol


  





(17. 尚硅谷_ES6_Symbol属性介绍_02&)

17. 尚硅谷_ES6_Symbol属性介绍_02&

Symbol不能被for in遍历出来

ECMAScript5,6,7从基本语法到高级函数_第43张图片

(18. 尚硅谷_ES6_iterator接口机制_01&)

18. 尚硅谷_ES6_iterator接口机制_01&

ECMAScript5,6,7从基本语法到高级函数_第44张图片




  
  Iterator遍历器


  

  

arguments伪数组没有数组的一般方法可以使用for of遍历,普通对象没有interator接口

ECMAScript5,6,7从基本语法到高级函数_第45张图片

ECMAScript5,6,7从基本语法到高级函数_第46张图片

(21. 尚硅谷_ES6_Generator函数简介_01&)

21. 尚硅谷_ES6_Generator函数简介_01&

可暂停执行,生成指针对象,调用next执行内部的逻辑,普通js逻辑不会阻塞

指针执行最后返回函数的返回值,默认undefined

ECMAScript5,6,7从基本语法到高级函数_第47张图片

在哪暂停的,就在哪里启动,传入的参数就是返回值

ECMAScript5,6,7从基本语法到高级函数_第48张图片

ECMAScript5,6,7从基本语法到高级函数_第49张图片




  
  Generator函数



  





返回每一个yield对应的状态

ECMAScript5,6,7从基本语法到高级函数_第50张图片

$.get返回url,保证成功调用next()又能看到url

ECMAScript5,6,7从基本语法到高级函数_第51张图片

传递url,写在getNews中的SX.next()保证了上一次请求已经成功

ECMAScript5,6,7从基本语法到高级函数_第52张图片

传递的'aaa'就是返回的url

ECMAScript5,6,7从基本语法到高级函数_第53张图片

(24. 尚硅谷_ES6_async函数详解及应用_01&)

24. 尚硅谷_ES6_async函数详解及应用_01&

以同步流程表达异步操作

遇到await不会向下执行,直到等待完异步才会继续向下执行,await接收promise,async返回值是promise对象




  
  async函数








ECMAScript5,6,7从基本语法到高级函数_第54张图片

普通函数await返回值就是当前函数执行完毕的返回值

ECMAScript5,6,7从基本语法到高级函数_第55张图片

调用成功状态的返回值

ECMAScript5,6,7从基本语法到高级函数_第56张图片

ECMAScript5,6,7从基本语法到高级函数_第57张图片

ECMAScript5,6,7从基本语法到高级函数_第58张图片

ECMAScript5,6,7从基本语法到高级函数_第59张图片

上面的异步任务执行成功以后才会执行下面的

ECMAScript5,6,7从基本语法到高级函数_第60张图片

返回值data作为resolve的参数

ECMAScript5,6,7从基本语法到高级函数_第61张图片

一旦状态为reject失败,后面await不会继续执行

ECMAScript5,6,7从基本语法到高级函数_第62张图片

失败会返回result为false

ECMAScript5,6,7从基本语法到高级函数_第63张图片

(26. 尚硅谷_ES6_class类使用详解&)

26. 尚硅谷_ES6_class类使用详解&

constructor中的属性都会放到类的原型上

ECMAScript5,6,7从基本语法到高级函数_第64张图片




  
  12_class





extends实现类型继承,super调用父类构造方法

ECMAScript5,6,7从基本语法到高级函数_第65张图片

(27. 尚硅谷_ES6_字符串,数组的扩展&)

27. 尚硅谷_ES6_字符串,数组的扩展

ECMAScript5,6,7从基本语法到高级函数_第66张图片




  
  01_字符串扩展





ECMAScript5,6,7从基本语法到高级函数_第67张图片




  
  02_数值扩展





(28. 尚硅谷_ES6_数组方法的扩展&)

28. 尚硅谷_ES6_数组方法的扩展&

form包装完毕就有数组的真方法了

ECMAScript5,6,7从基本语法到高级函数_第68张图片




  
  03_数组扩展






(29. 尚硅谷_ES6_对象方法的扩展&)

29. 尚硅谷_ES6_对象方法的扩展&

ECMAScript5,6,7从基本语法到高级函数_第69张图片

obj4是obj3的原型

ECMAScript5,6,7从基本语法到高级函数_第70张图片




  
  04_对象扩展







(30. 尚硅谷_ES6_深度克隆_01&)

30. 尚硅谷_ES6_深度克隆_01&

输出wade堆栈模型

ECMAScript5,6,7从基本语法到高级函数_第71张图片

数组拷贝方法

ECMAScript5,6,7从基本语法到高级函数_第72张图片

ECMAScript5,6,7从基本语法到高级函数_第73张图片




  
  对象的深度克隆




 

深拷贝

call绑定this,slice截取字符串最后一个可以使用-1

ECMAScript5,6,7从基本语法到高级函数_第74张图片

ECMAScript5,6,7从基本语法到高级函数_第75张图片

不能指向同一个内存地址,要继续遍历获取的value值

ECMAScript5,6,7从基本语法到高级函数_第76张图片

嵌套对象,result为最终克隆的数据

ECMAScript5,6,7从基本语法到高级函数_第77张图片

(32. 尚硅谷_ES6_set,map容器详解&)

32. 尚硅谷_ES6_set,map容器详解&

ECMAScript5,6,7从基本语法到高级函数_第78张图片

ECMAScript5,6,7从基本语法到高级函数_第79张图片




  
  05_Set和Map数据结构







(33. 尚硅谷_ES6_for of用法详解&)

33. 尚硅谷_ES6_for of用法详解&

数组去重

ECMAScript5,6,7从基本语法到高级函数_第80张图片




  
  06_for_of循环












(34. 尚硅谷_ES7_方法介绍&)

34. 尚硅谷_ES7_方法介绍&

 

你可能感兴趣的:(前后端分离&全栈&小程序目录,es6/es7)