1、严格模式
书写这行代码:“use strict”;
'use strict'
a = 2;
console.log(a);
2、ES5新增函数方法
1、bind方法:改变了函数内部的this指向
this指向:
- 全局变量中,this指向的是window
- 在函数内部,this指向的是window
- 在方法内部,this指向的是方法的拥有者
哪个对象调用函数,函数里面的this指向哪个对象。
2、call和apply
作用完全一样,唯一的区别就是在参数上面。
call接收的参数不固定,第一个参数是函数体内的this的指向,第二个参数以下是依次传入的参数。
apply接收两个参数,第一个参数也是函数体内this的指向;第二个参数是一个集合对象(数组或者类数组)
主要用途:
1、改变this指向
2、方法借用
let obj1={
a:222
};
let obj2={
a:111,
fn:function(){
alert(this.a);
}
}
obj2.fn.call(obj1);
3、ES5新增的数组方法
1、forEach:遍历数组;对数组的每一个元素执行一次提供的函数。
var array = ['a', 'b', 'c'];
array.forEach(function(element) {
console.log(element);
});
//function(currentValue, index, arr)
//currentValue 必需。当前元素
//index 可选。当前元素的索引值。
//arr 可选。当前元素所属的数组对象。
2、map:将数组映射成新数组。
var arr = [2,6,4,8];
var newArr = arr.map(function (v){
return v * 2;
});
console.log(newArr);
3、filter:过滤数组后,返回新数组。
var arr = [4,5,6,7];
var newArr = arr.filter(function (v){
if(v > 5){
return true;
}else {
return false;
}
});
console.log(newArr);
//[6,7]
4、some:遍历数组,只要数组中有一项符合条件,就返回true。
var arr = [5,9,6,8];
var newArr = arr.some(function (v){
if(v > 6){
return true;
}else {
return false;
}
});
console.log(newArr);//true
5、every方法:所有项都必须符合条件,否则返回false。
6、indexOf:检索数组,若没有匹配项则返回-1,有则返回当前索引。
7、Array.isArray():判断一个变量是否为数组。
4、新增JSON对象方法
1、JSON.parse():将一个json格式的字符串转换成对象。
2、JSON.stringify:将对象转成json格式的字符串。
5、字符串方法
1、myStr.charAt(num):返回在制定位置的字符。
2、myStr.charCodeAt(num):返回指定位置的字符的Unicode(是字符编码的一种模式)编码。
3、myStr.match():在字符串中检索指定的值,返回的值是数组。如果匹配不到返回null。配合正则来用。
var str = 'hello world';
console.log(str.match('ll'));
//["ll", index: 2, input: "hello world", groups: undefined]