对象扩展
Object.create(prototype,[desc])
作用:以指定对象为原型创建新的对象 为新的对象指定新的属性,并对属性进行描述 value:指定值 writable:标识当前属值是否可修改,默认false configureable:标识当前属性是否可以被删除,默认为false enumerable:标识当前属性是否能用for in 枚举默认false
var obj = {name:'test',age:67}
var obj1 = {}
console.log(Object.create(obj))
返回如下
代码语言:javascript复制Object
__proto__:
name: "test"
age: 67
__proto__: Object
新的对象指定新的属性,并对属性进行描述 Object.defineProperties(object,desc)
作用:为指定对象定义扩展多个属性 get
:用来获取当前属性值的回调函数 set
:修改当前属性值的回调函数,并且实参为修改后的值
var obj = {name:'test',age:67}
var obj1 = {}
Object.create(obj,{
sex:{
value:'男',
writable:true,//标识可写
configureable:true,//标识可删除
enumerable:false//禁止枚举
}
})
obj1.sex='女'
delete obj1.sex
console.log(obj1) //{}
代码语言:javascript复制var obj = {firstName:'码',lastName:'yun'}
Object.defineProperties(obj,{
fullName:{
get(){
return this.firstName this.lastName
},
set(newValue){
this.firstName = newValue.split('')[0]
this.lastName = newValue.split('')[1]
}
}
})
console.log(obj.fullName)
obj.fullName = '建林'
console.log(obj.fullName)
数组扩展
Array
map方法将原数组映射为一个新的数组,返回结果为一个新的数组 如下示例 将原数组与映射成布尔数组
代码语言:javascript复制let arr = [45,60,78,42.56,80];
let res = arr.map(function(item,index){
return item>60;
})
console.log(arr,res);
代码语言:javascript复制 let obj = [
{name:'test',age:13,sex:'m'},
{name:'test2',age:13,sex:'w'},
{name:'test3',age:18,sex:'w'},
];
let res = obj.map(function(item){
return item.age;
})
console.log(obj,res);
- forEach 有了这个就不用写for了 执行数组的遍历 ```javascript
let obj = [0,1,2,3]; obj.forEach(function(item,index){ console.log(item) })
代码语言:javascript复制 - **filter**
遍历并过滤数组
返回会数组中满足条件的元素
```javascript
let obj = [
{name:'a',score:67},
{name:'b',score:56},
{name:'c',score:34},
{name:'d',score:90},
{name:'e',score:67},
]
let res = obj.filter(function(item,index){
if(item.score>60){
return item
}
})
console.log(res);
去除数组中的空 undifind
代码语言:javascript复制var arr = ['1','2',undefined, '3','']
var newArr = arr.filter(function(item,index){
return item
})
console.log(newArr)
- reduce reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。reduce() 方法接受四个参数:初始值(或者上一次回调函数的返回值),当前元素值,当前索引,调用 reduce() 的数组。 一个简单实例,数组求和
let arr = [1,2,3,4,5,6];
let res = arr.reduce(function(tem,item,index){
return tem item;
})
console.log(res);//21
tmp参数就是每次求和的值如第一次=1 2这时候tmp变成了3然后又执行3 3此时tmp变成了6依此类推直到求出总和。 示例二,将二数组转化为一维数组
代码语言:javascript复制let arr=[[1,2],[3,4],[5,6]];
let res = arr.reduce(function(tmp,item,index){
return tmp.concat(item);
})
console.log(res)
- every 遍历数组,查找数组中所以满足条件 返回true,只要一个不满足条件返回false
let ojb = [
{name:'a',score:60},
{name:'b',score:45},
{name:'c',score:67}
]
let res = ojb.every(function(item){
return item.score>60
})
console.log(res)//false
some 遍历数组,与every相反该方法只要数组中有一个满足条件返回ture
代码语言:javascript复制let ojb = [
{name:'a',score:60},
{name:'b',score:45},
{name:'c',score:67}
]
let res = ojb.every(function(item){
return item.score>60
})
console.log(res)//true
find find与上面两个方法类似,但find返回的是满足条件的具体的值,只返回一个满足条件的元素
代码语言:javascript复制let ojb = [
{name:'a',score:60},
{name:'b',score:45},
{name:'c',score:67}
]
let res = ojb.find(function(item){
return item.score>=60
})
console.log(res)//{name:'a',score:60},
新增String方法
includes(str,start)
:返回布尔值,查找字符串中是否包含str返回布尔值,start可选表示从字符串哪个位置开始查找
let res = "hello".includes('l');
console.log(res)//true
startsWith(str,start)
:查找str是否在字符串开头
let res = "hello".startsWith('e');
console.log(res)//false
endsWith(str,start)
:查找str是否在str结尾
let res = "hello word".endsWith('word');
console.log(res)//true
repeat(int)
接收整数参数表示将字符串重复几次
let res = "helloword".repeat(2)
console.log(res)//hellowordhelloword