Es5扩展

2022-09-08 15:32:02 浏览数 (1)

对象扩展

Object.create(prototype,[desc]) 作用:以指定对象为原型创建新的对象 为新的对象指定新的属性,并对属性进行描述 value:指定值 writable:标识当前属值是否可修改,默认false configureable:标识当前属性是否可以被删除,默认为false enumerable:标识当前属性是否能用for in 枚举默认false

代码语言:javascript复制
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:修改当前属性值的回调函数,并且实参为修改后的值

代码语言:javascript复制
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() 的数组。 一个简单实例,数组求和
代码语言:javascript复制
 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
代码语言: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)//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可选表示从字符串哪个位置开始查找

代码语言:javascript复制
let res = "hello".includes('l');
console.log(res)//true

startsWith(str,start):查找str是否在字符串开头

代码语言:javascript复制
let res = "hello".startsWith('e');
console.log(res)//false

endsWith(str,start):查找str是否在str结尾

代码语言:javascript复制
let res = "hello word".endsWith('word');
console.log(res)//true

repeat(int) 接收整数参数表示将字符串重复几次

代码语言:javascript复制
let res = "helloword".repeat(2)
console.log(res)//hellowordhelloword

0 人点赞