3 ES5中的新增方法
3.1 ES5新增方法概述
ES5中给我们新增了一些方法,可以很方便的操作数组或者字符串,这些方法主要包括:
- 数组方法
- 字符串方法
- 对象方法
3.2数组方法
迭代(遍历)方法:forEach(),map(),filter(),some(),every();
forEach()
array.forEach(function(currentValue,index,arr))
- currentValue:数组当前项的值
- index:数组当前项本身
- arr:数组本身
var arr = [1,3,5,67];
arr.forEach(function(value,index,array){
console.log(value);//1|3|5|67
console.log(index);//0|1|2|3
console.log(array);//1,3,5,67
})
filter()
array.filter(function(currentValue,index,arr))
- filter()方法创建一个新数组,新数组中的元素,是通过检查指定数组中符合条件的所有元素,主要用于筛选数组
- 注意它直接返回一个新数组
- currentValue:数组当前项
- index:数组当前项本身
- arr:数组本身
var arr = [12,45,1];
var newArr = arr.filter(function(value,index,arr){
return value >=20
})
console.log(newArr);//[45]
some()
array.some(function(currentValue,index,arr));
- some()方法用于检测数组中的元素是否满足指定条件,通俗点查找数组中是否有满足条件的元素
- 注意它的返回值是布尔型,如果查找到这个元素,就返回true,如果查找不到就返回false
- 如果找到第一个满足条件的元素,则终止循环,不在继续查找
- currentValue:数组当前项的值
- index:数组当前项本身
- arr:数组本身
var arr = [10,30,4];
var flag= arr.some(function(value){
return value>=20;
});
console.log(flag);//true
3.3字符串方法
trim()方法会从字符串两端删除空白字符。
str.trim()
trim()方法并不影响原字符串本身,它返回的是一个新的字符串。
var str = ' andy ';
var str1 = str.trim();
console.log(str);// andy
console.log(str1);//andy
3.4对象方法
1.Object.keys(obj)用于获取对象自身的所有的属性
Object.keys(obj);
- 效果类似for…in
- 返回一个由属性名组成的数组
var obj = {
name:'hhh';
age:10
};
var arr = Object.keys(obj)
console.log(arr);//["name","age "]
2.Object.defineProperty()定义对象中新属性或修改原有的属性
Object.defineProperty(obj,prop,descriptor);
- obj:必需。目标对象
- prop:必需。需定义或修改的属性名字
- descriptor:必需。目标属性所拥有的特征
Object.defineProperty() 第三个参数descriptor说明:以对象形式{}书写 - value:设置属性的值,默认underfined
- writable:是否可以重写。true|flase
- enumerable:目标属性是否可以被枚举。true|flase,默认为false
- configurable:目标属性是否可以被删除或是否可以再次修改特性true|false。默认为false
var obj = {
name: 'yph',
age : 23,
work : 'nowork'
}
//1.以前的对象添加修改属性的方式
//obj.work = 'yes'
//obj.hobby = 'games'
//2.Object.defineProperty()定义对象中新属性或修改原有的属性
Object.defineProperty(obj,'num',{
value:1000
})//相对于obj.num = 1000
Object.defineProperty(obj,'name',{
//不允许修改name
writable:false
})
Object.defineProperty(obj,'address',{
value:'xxx省xxx市',
//false不允许遍历,默认false
enumerable:false,
//不允许删除
configurable:false
})