1.es5 严格模式
- 如何使用? 在script标签第一行添加
'user strict'
字符串 - 必须使用var声明变量
- 禁止自定义函数中this指向window
- 创建eval作用域
- 对象能有重名属性
- 声明变量必须用var
2.json格式扩展
JSON.stringify(obg/arg)
--js对象转换为json对象JSON.parse(json)
--json对象转换位js对象
3.数据扩展
4.call apply bind用法详解
- 作用 Function.prototype.bind(obj) --讲函数内的this绑定位obj
- 区别:call()/apply()都是立即调用函数,bind()是讲函数返回
- call和apply的区别: call(obj,arg1,arg2,arg3) / apply(obj,[arg1,arg2,arg3])
- bind和call传参方式一样
setTimeout(function(){ console.log(this) }.bind(obj),100)
--bind改变setTime中匿名函数的this
5.let const关键字
- let 块级作用域
6.模板字符串
- 语法: 在字符串中使用变量只需用`${}括起来
7.解构赋值
let obj={name:'zhangsan',age:'16'}
let {name,age}=obj
//成功给name age赋值
8.对象的简写方式
let name ='zhangsan'
let obj={name,age}
当键的名称和值的名称一样时,可以合并成一个console.log(obj.name)
输出: zhangsan
9.箭头函数
()=>{}
age=>{}
当参数只有一个的时候,小括号可以省略age=> console.log(age)
函数体只有一条语句或者表达式的时候,大括号可以省略console.log(age=>age+10)
函数体只有一条语句或者表达式的时候返回值就是这一条语句或表单氏- 箭头函数中的this相当于定义时候父级的this
10.三点运算符
function test(a,b,...c){ console.log(c)} test(1,2,3,4,5,6,7)
结果输出3 4 5 6 7
11.形参默认值
function test(a=10,b=12){ console .log(a,b)} test()
输出: 10 12
12.promise对象
-
为什么要使用promise
解决 (回调地狱) -
promise的使用
<script> function getNews(url) { let promise = new Promise((resolve, reject) => { //ajax... let xmlHttp = new XMLHttpRequest(); xmlHttp.onreadystatechange = function () { if (xmlHttp.readyState == 4) { if (xmlHttp.status == 200) { console.log(xmlHttp.responseText); resolve(); //表示执行成功 } else { reject(); //失败 } } } xmlHttp.open('get', url) }) return promise; } getNews('http://localhost:8080/test/getnews?nid=1').then((data) => { //newsajax执行成功 //获取数据 console.log(data); //获取文章信息 如果return一个 resolve()后的promise对象 执行下面的ten return getNews('localhost:8080/.......'); }, () => { //失败 }).then((data) => { //评论ajax执行成功 }, () => console.log('失败')) </script>