1. 一、数组API
    实际开发中forEachmap会多一些
    =>是es6语法中的arrow function
    举例:
    (x) => x + 6
    相当于
    function(x){
    return x + 6;
    }
    undefined转成数字是NaN
  2.  
  3. 判断:
    arr.every():判断arr中每个元素是否都符合要求
    只有每个元素都符合条件时,才返回true
    只要有一个元素不符合条件,就返回false
    类似&&
    arr.some():判断 arr中是否包含符合要求的元素
    只要有一个元素符合条件,就返回true
    除非所有元素都不符合条件,才返回false
    类似||
    如何:
    var bool = arr.every(function(valiarr){
    val //自动获得当前元素值
    i //自动获得当前元素的位置
    arr //自动获得当前数组
    return 条件;
    })
    ps:参数用不到的可以不写,
    every 会用function,去每个元素执行一次,收集返回的truefalse
    ----------------------------------------------
    例:判断数组是否全部偶数,只用一个参数
    <script type="text/javascript">
    var arr1 = [1,2,3,4,5];
    var arr2 = [10,6,4,8,2];
    var arr3 = [1,2,3,2,1];
    function allEven(arr){
    return arr.every(function(val){
    return val%2==0;
    })
    //简写成:
    return arr.every(val=>val%2==0);
  4.  
  5. }
    console.log(
    allEven(arr1),//false
    allEven(arr2),//true
    allEven(arr3) //false
    )
    </script>
  6.  
  7. 上述例子改成arr.some()结果为:true true true
    ----------------------------------------
    例:判断是不是升序排序:三个参数都用到
    var arr1 = [1,2,3,4,5];
    var arr2 = [10,6,4,8,2];
    var arr3 = [7,6,3,2,1];
    function isASC(arr) {
    return arr.every(function(val,i,arr){
    //最后一个值和自己比较永远为true,4<4时就是最后一个值了,设true
    return i<arr.length-1 ? val<=arr[i+1]:true;
    })
    //简写成:
    return arr.every(
    (val,i,arr) => i<arr.length-1?val<=arr[i+1]:true
    );
  8.  
  9. }
    console.log(
    isASC(arr1),//true
    isASC(arr2),//false
    isASC(arr3) //false
    )
    ----------------------------------------------------------------------------------------------------------------
  10.  
  11. 二、遍历
    arr.forEach():对原数组中每个元素执行相同的操作,不能新值返undefined
    arr.map():取出原数组中的值,加工后,放入新数组,可以赋新值,返回新值
    如何:arr.forEach(function(val,i,arr){
    arr[i]=新值;
    })
    arr.map(function(val,i,arr){
    return 新值;
    })
    例:数组arr1值乘以2,数组arr2除以2给新值
    var arr1 = [1,2,3,4,5];
    var arr2 = [10,6,4,8,2];
    var arr3 = [7,6,3,2,1];
    //每个值 *2返回
    arr1.forEach(function(val,i,arr){
    arr[i]*=2;
    })
    //简写成:
    arr1.forEach((val,i,arr)=>arr[i]*=2)
    console.log(String(arr1))//2,4,6,8,10
  12.  
  13. //每个值 /2返回新值,新变量接
    var newArr = arr2.map(function(val,i,arr){
    return val/2;
    })
    //简写成:
    var newArr = arr2.map(val =>val/2)
    console.log(String(arr2))//10,6,4,8,2
    console.log(String(newArr))//5,3,2,4,1
  14.  
  15. 三、过滤和汇总
    过滤:选取原数组中符合条件的元素组成新数组
    var subArr = arr.filter(function(val,i,arr){
    return 条件;//所有返回true的元素,被复制到新数组
    })
    例:过滤arr1中所有偶数
    var arr1 = [1,2,3,4,5];
    var evens =arr1.filter(function(val){
    return val%2==0;
    })
    //简写成:
    var evens = arr1.filter(val=>val%2==0)
    console.log(String(arr1))//1,2,3,4,5
    console.log(String(evens))//2,4
  16.  
  17. 汇总:对数据中每个元素的值最终统计出一个新结果
    var result = arr.reduce(function(prev,val,i,arr){
    prev //获得截止目前的统计结果
    return prev+val; //当前值和现在的prev值
    },start) //start是汇总后要加的值到总和中
    例:汇总arr1arr2总和
    var arr1 = [1,2,3,4,5];
    var arr2 = [10,6,4,8,2];
    //求arr1总和
    var result =arr1.reduce(function(prev,val){
    return prev+val;
    })
    var result =arr2.reduce(function(prev,val){
    return prev+val;
    },result)
    console.log(result)//45
    //25
    var result =arr1.reduce(function(prev,val){
    return prev+val;
    },10)
    console.log(result)//25
  18.  
  19. 效率:数组API,其实内部使用的还是for循环遍历的方式,并没有提高程序的执行效率。只是简化了代码量。
  20.  
  21. 在鄙视面试中会提到不能用数组API,意思是舍去了for循环还考你什么
  22.  
  23. *****bind()
    什么是:基于一个现有函数,创建一个新函数,并永久绑定this
    不但可永久绑定this,也可永久绑定参数
    为什么:this总是发生变化。
    何时:只要希望一个对象永久绑定一个函数的this上。
    结果:函数中的this将永远无法被其他对象替换。
    (相当于一本书写上的自己的名字)
  24.  
  25. 例:定义一个计算器,没绑定bind的为公共计算器,call可以调用,绑定bind的为私人计算器,别人调用不了,
    //ps:用bind绑定的call强制作借用不好用了,
    function calc(base,bonus){
    console.log(
    this.ename+'的总工资是'+(base+bonus)
    )
    }
    var lilei = {ename:'Li Lei'};
    var hmm = {ename:"Han Meimei"};
    //lilei临时借用calc计算器
    calc.call(hmm,10000,4000)//Han Meimei的总工资是14000
    calc.call(lilei,10000,1000)//Li Lei的总工资是11000
    //lilei买了一个和 calc一样的计算器,新计算器永久属于lilei
    var lilei_calc=calc.bind(lilei);
    lilei_calc(10000,3000); //Li Lei的总工资是13000
    lilei_calc(10000,5000); //Li Lei的总工资是15000
    lilei_calc(10000,9000); //Li Lei的总工资是19000
    //hmm借lilei的计算器,call没有bind强大,借来用不了,名还是Li Lei
    lilei_calc.call(hmm,10000,2999);//Li Lei的总工资是12999,
  26.  
  27. 鄙视题:call apply bind 区别
    callapply:临时借用一个函数,并替换this为指定对象,
    -----立刻执行
    bind:基于现有函数,创建一个新函数,并永久绑定this 为指定对象。
    -----只创建函数,不执行(要执行在下边在调用)
    何时:立刻执行函数-------call
    不立刻执行 -------bind
  28.  
  1. 二、Object.create()
    情况1
  1. var o1 =Object.create({x:1,y:2}) //o1继承了属性x和y
  1. console.log(o1.x)          //1
  1. 情况2
  1. var o2 =Object.create(null)
    console.log(o2)// 一般不这样做,没意义{}
  1. 情况3
  1. var o3 =Object.create(Object.prototype)
    console.log(o3)// o3和{}和new Object()一样
  2.  
  3. 真正意义所在第二个参数:
  1.  
  2. 英意 :inherit  继承

ES5新增内容的更多相关文章

  1. js数组定义和方法 (包含ES5新增数组方法)

    数组Array 1. 数组定义 一系列数据的集合成为数组.数组的元素可以为任何类型的数据(包括数组,函数等),每个元素之间用逗号隔开,数组格式:[1,2,3]. 2. 数组创建方式 (1) 字面量方法 ...

  2. AppleWatch开发教程之Watch应用对象新增内容介绍以及编写运行代码

    AppleWatch开发教程之Watch应用对象新增内容介绍以及编写运行代码 添加Watch应用对象时新增内容介绍 Watch应用对象添加到创建的项目中后,会包含两个部分:Watch App 和 Wa ...

  3. 4日6日--ES5新增数组方法

    forEach使用的函数调用,所以占内存比较大,不如定长for循环和迭代for循环 1.通过forEach将数组中的元素逐个表示出来(遍历方法,读取操作). 2.通过map将原数组中的元素进行算数运算 ...

  4. String方法,js中Array方法,ES5新增Array方法,以及jQuery中Array方法

    相关阅读:https://blog.csdn.net/u013185654/article/details/78498393 相关阅读:https://www.cnblogs.com/huangyin ...

  5. 从零开始学 Web 之 HTML5(二)表单,多媒体新增内容,新增获取操作元素,自定义属性

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

  6. Delphi XE5中的新增内容

    Delphi XE5中的新增内容 Delphi XE5是所有Delphi开发人员的必须备升级,并且是来自Embarcadero的获奖的.多设备应用开发解决方案的最新版本.使用Delphi XE5的新特 ...

  7. ES5新增数组方法测试和字符串常见API测试

    首先是ES5新增数组方法测试: <!DOCTYPE html><html lang="en"><head> <meta charset=& ...

  8. ES5新增的数组方法

    ES5新增:(IE9级以上支持)1.forEach():遍历数组,无返回值,不改变原数组.2.map():遍历数组,返回一个新数组,不改变原数组.3.filter():过滤掉数组中不满足条件的值,返回 ...

  9. ES6新增内容总结

    ES6新增内容有:1,模块化思想.2,关于变量let和const.3,解构赋值.4,字符串的扩展.5,函数的扩展.6,箭头函数.7,继承apply的用法 以下就是详解: 1:模块化思想 非模块化有命名 ...

随机推荐

  1. Spring Boot + Mybatis + Redis二级缓存开发指南

    Spring Boot + Mybatis + Redis二级缓存开发指南 背景 Spring-Boot因其提供了各种开箱即用的插件,使得它成为了当今最为主流的Java Web开发框架之一.Mybat ...

  2. 在windows中把一个文件夹打成war包

    转: 在windows中把一个文件夹打成war包 一般开发打war包时都是用MyEclipse或IntelliJ IDEA等直接导出war文件,这里介绍一种如何把一个文件夹打成war包的方式,如下   ...

  3. JS重点整理之JS原型链彻底搞清楚

    对象 要清楚原型链,首先要弄清楚对象: 普通对象 最普通的对象:有__proto__属性(指向其原型链),没有prototype属性. 原型对象(person.prototype 原型对象还有cons ...

  4. mysql 存储过程中文乱码的解决方法

    CREATE PROCEDURE `PROC_FOOBAR`(id INTEGER) BEGIN DECLARE code, user_id VARCHAR(32) CHARACTER SET utf ...

  5. 微信小程序:图片预览

    wxml页面: <image src='{{UPLOAD_IMAGES_URL}}{{vv.img_s}}' data-src="{{vv.img}}" bindtap=&q ...

  6. window下域名解析系统DNS诊断命令nslookup详解

    Ping指令我们很熟悉了,它是一个检查网络状况的命令,在输入的参数是域名的情况下会通过DNS进行查询,但只能查询A记录和CNAME(别名)记录,还会返回域名是否存在,其他的信息都是没有的.如果你需要对 ...

  7. nGrinder TestRunner XFF / X-Forwarded-For

    s 我们在压测请求报文里面带了这个"x-forward-for":"10.24.51.132"这个字段,所以我们所有的压测请求穿透到应用系统的时候,应用系统上采 ...

  8. MyBatis-获取 xxxMapper

    Main 方法,mybatis 版本为 3.5.0 使用 MapperProxyFactory 创建一个 MapperProxy 的代理对象 代理对象里面包含了 DefaultSqlSession(E ...

  9. ant design环境搭建过程中遇到的问题--Windows-dva-cli

    基础的此处略去,nodejs和npm是前提. 1.官网介绍的是脚手架工具是antd-init,但是又建议真实项目中用dva-cli,所以博主就直接装的是dva-cli,这里主要是简单介绍下博主在Win ...

  10. laravel 5.4 fopen(): Filename cannot be empty

    1.出错的报错信息(我在用laravel5.4文件上传时候出错的) laravel 5.4 fopen(): Filename cannot be empty 2.解决的方法 在php.ini中修改临 ...