2019-06-27

ES5

严格模式

理解:这种模式使得Javascript在更严格的语法条件下运行

作用:消除Javasscript语法的一些不合理、不严谨之处,减少怪异行为

使用:‘use strict’;(如果浏览器不支持的话,只解析为一条简单的语句,没有副作用)

注意事项:必须使用var声明变量

禁止自定义的函数中的this指向window

创建eval作用域

对象不能有重名的属性

JSON对象

JSON.stringifly(obj/arr)    js对象转换为json对象(数组)

JSON.parse(json)    json对象转换为js对象(数组)

Object扩展

ES5给Object扩展了两个常用静态方法

Object.crate(prototype,[descriptos])

* 作用: 以指定对象为原型创建新的对象

* 为新的对象指定新的属性, 并对属性进行描述

- value : 指定值

- writable : 标识当前属性值是否是可修改的, 默认为false

- configurable: 标识当前属性是否可以被删除 默认为false

- enumerable: 标识当前属性是否能用for in 枚举 默认为false

Object.defineProperties(object, descriptors)

* 作用: 为指定对象定义扩展多个属性

- get :用来获取当前属性值得回调函数

- set :修改当前属性值得触发的回调函数,并且实参即为修改后的值

* 存取器属性:setter,getter一个用来存值,一个用来取值

Array扩展

Array.prototype.indexOf(value) : 得到值在数组中的第一个下标

Array.prototype.lastIndexOf(value) : 得到值在数组中的最后一个下标

Array.prototype.forEach(function(item, index){}) : 遍历数组

Array.prototype.filter(function(item, index){}) : 遍历过滤出一个新的子数组, 返回条件为true的值

Function扩展

Function.prototype.bind(obj) :

* 作用: 将函数内的this绑定为obj, 并将函数返回

区别bind()与call()和apply()?

* 都能指定函数中的this

* call()/apply()是立即调用函数

* bind()是将函数返回

let

与var类似,用于声明变量

在块作用域内有效

不能重复声明

不会预处理,不存在变量提升

循环遍历加监听

使用let取代var是趋势

const

定义一个常量

特点:

不能修改

其它特点同let

应用

保存不用改变的数据

模板字符串 : 简化字符串的拼接

模板字符串必须用 `` 包含

变化的部分使用${xxx}定义

简化对象写法

省略同名属性值

省略方法的function

你可能感兴趣的:(2019-06-27)