ES5就是ECMAScript
ES5新增属性
1、严格模式:除了正常的运行模式,ES5规范了一种新的模式,有效的防止了有些不合理的语法
语法:'use strict',必须写在代码的最前面
设立目的:
1、消除js语法的一些不合理、不严谨之处,减少一些怪异行为
2、消除代码的一些怪异之处,保证代码的运行安全
3、提高编译器效率,增加运行速度
4、为未来新版本的js做好铺垫
严格模式体现了js更合理、更安全、更严谨的发展方向,包括IE10在内的主流浏览器,IE8以前的浏览器将'use strict'当成一个字符串转译,不会报错
注意的点:
1、'use strict'必须写在代码块的第一行,最多只能存在注释,否则没用
2、全局环境下使用严格模式,对整个脚本都起作用
3、针对某个函数使用,在函数体内写'use strict'这个严格模式就是针对整个函数
ES5新增的属性和方法(IE6/7/8不支持)
全局变量会自动变成window对象身上的属性
1、bind方法
函数身上的方法,返回值是一个人this变量值发生变化的函数,返回一个新的函数
this是函数内部默认的一个内置变量(严格模式下,this指向是undefined)
1、 在全局环境中使用this的指向(值)是window
2、在函数内部,this指向的 还是window
3、在对象的方法内部,this指向的是方法的拥有者
2、forEach()方法
语法:arr.forEach(function(v,k,arr){},context);//v : value ; k : key;
context:改变函数的this的指向,如果不改变,默认指向window
3、map()方法 :映射
语法:arr.map(function(v,k,arr){},context);//v : value ; k : key;
遍历数组,将信数组执行以后存储起来,并返回一个新数组
4、filter()方法:过滤
语法:arr.filter(function(v,k,arr){},context);//v : value ; k : key;
返回一个布尔值,如果返回值是true就存储起来,如果是false,就过滤,最后返回一个过滤后的新数组
5、some()方法:起到或的作用(||)
语法:arr.some(function(v,k,arr){},context);//v : value ; k : key;
判定一个数组是否符合某个条件,如果有一项符合返回true,如果一项都不符合,返回false;
6、every()方法:起到与的作用(&&)
语法:arr.every(function(v,k,arr){},context);//v : value ; k : key;
判定一个数组是否符合某个条件,如果有一下该不符合就返回false,如果都符合返回true
7、indexOf()方法:在数组中查找某个元素
语法:indexOf(查找的元素,‘开始位置’)
返回值:从左往右查找,如果找到返回这个元素的下标,如果找不到,返回-1,严格去查找,字符串和数字明确分辨,第二个参数也支持负数,从右向左查找
8、lastIndexOf()方法:在数组中查找某个元素
语法:lastIndexOf(查找的元素,‘开始位置’)
返回值:从右往左查找,如果找到返回这个元素的下标,如果找不到,返回-1,严格去查找,字符串和数字明确分辨,第二个参数也支持负数,从左往右查找
9、reduce()方法:归并语法:arr.reduce(function(previous, current, index, arr){} ,initialValue);
遍历数组从左往右
function:回调函数
previous:上一次计算的结果,先前值
current:当前值
index:当前值的下标(不打印第一个arr[0]的下标,arr[0]充当了previous)
arr:数组
initialValue:初始化的了一个先前值
10、reduceRight()方法:归并
语法:arr.reduceRight(function(previous, current, index, arr){} ,initialValue);
遍历数组的方法从右往左,其余和reduce方法一样
11、Array.isArray()方法:判断某个变量是否为数组
12、字符串新增的方法:
trim():忽略字符串左右两侧的空格,只去除左右两端的空格
13、ES中新增的JSON对象的方法
JSON:一种轻量级的数字交换机制,就是一个对象
JSON.stringify():将一个对象格式化成JSON字符串,不会格式化方法,只会把方法去掉
JSON.parse():将一个JSON格式的字符串转换为对象,字符串中的键必须用双引号包起来,如果不包起来就会报错,不能加方法,因为方法也是在一个字符串中包含着