1.call 实现(apply 类似)

  Function.prototype.call= function(context){
      context = context || window;
      context.fn = this;
      let args =[];
      for(let i=1;i<arguments.length;i++){
          args.push('arguments[' + i + ']');
      }
      var result = eval("context.fn( " + args + ")");  // args 会调用toString()方法 
      delete context.fn;            “arguments[1],arguments[2]”   
      return result;
}

2.bind 实现

  Function.prototype.bind = function(context){
      let self = this;
      let proto = Array.prototype;
      let args =proto.slice.call(arguments,1);    // 调用bind方法传入的参数

      function forBind(){};
      forBind.prototype = this.prototype;     // 考虑到通过中间对象引用当前方法的原型
      let bindfun = function(){
          let lateArg = proto.slice.call(arguments);        // 调用bind后返回的方法传入的参数
          self.apply(context,args.contact(lateArg));
      }
      bindfun.prototype = new forBind();       //  指向当前方法的原型
      return bindfun;
}

3.array的几个常用方法

forEach  (遍历数组中的元素)

  [1,2,3].forEach(function(item,idx,arr){  //item为每个元素idx为当前元素索引 arr 为当前数组 
      console.log(item + "--" + idx );
  })

map (遍历数组  通过返回的值得到一个新的数组)

  let mapArr = [1,2,3].map(function(item,idx,arr){     
         return item *item;
  })
  console.log('mapArr---------:',mapArr)          //   mapArr---------: (3) [1, 4, 9]

filter(遍历数组   将返回为true的元素组成新的数组)
  let filterArr=[2,3,4].filter(function(item,idx,arr){
         return item %2 ==0;
  })

  console.log("filterArr----------------:",filterArr)     // filterArr----------------: (2) [2, 4]

every(遍历数组 每个元素符合条件返回true时 最终结果才为true)
  let everyBool = [1,2,3].every(function(item,idx,arr){
         return item >=1;

  })

  console.log("everyBool----------:",everyBool )       // everyBool----------: true

some(遍历数组 有一个元素符合条件返回true时 最终结果便为true)

  let someBool = [1,2,3].some(function(item,idx,arr){
         return item >=3;

  })

  console.log("someBool----------:",someBool)       // someBool----------: true

call bind的实现以及数组常用方法的更多相关文章

  1. javascript中数组常用方法总结

    原文:javascript中数组常用方法总结 在javascript的基础编程中,数组是我们最常遇到的,那么数组的一些常用方法也是我们必须要掌握的,下面我们总结一下数组中常用的方法. toString ...

  2. javascript 数组 常用方法

    前言  学学忘忘  闲来做个笔记 整理下数组常用方法. Array 数组常用方法  创建数组的基本方式有两种    1.第一种是使用Array构造函数,  var arr = new Array(); ...

  3. Object-c的数组常用方法

    Object-c的数组常用方法 #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @a ...

  4. ES6中的数组常用方法

    数组在JS中虽然没有函数地位那么高,但是也有着举足轻重的地位,下面我就结合这ES5中的一些常用的方法,与ES6中的一些方法做一些说明和实际用途.大家也可以关注我的微信公众号,蜗牛全栈. 一.ES5中数 ...

  5. JavaScript 数组 常用方法(二)

    写在前面:续接上篇 JavaScript 数组 常用方法 数组常用方法第二弹来了: some && every 描述: every()与some()方法都是JS中数组的迭代方法. so ...

  6. JavaScript数组常用方法解析和深层次js数组扁平化

    前言 数组作为在开发中常用的集合,除了for循环遍历以外,还有很多内置对象的方法,包括map,以及数组筛选元素filter等. 注:文章结尾处附深层次数组扁平化方法操作. 作为引用数据类型的一种,在处 ...

  7. 第一百一十四篇: JS数组Array(三)数组常用方法

    好家伙,本篇为<JS高级程序设计>第六章"集合引用类型"学习笔记   1.数组的复制和填充 批量复制方法 copyWithin(),以及填充数组方法fill(). 这两 ...

  8. Jsの练习-数组常用方法

    1. join() 方法: <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...

  9. call,apply,bind与es6的数组扩展运算符...

    js中每一个Function对象都有一个apply个一个call方法: function.apply(thisObj,[argArray]); function.call(thisObj,arg1,a ...

  10. JavaScript基础之数组常用方法

    目录 JS 数组常用API 常用属性 常用方法 常见方法语法解释 from方法 isArray concat every fill filter find forEach indexOf join k ...

随机推荐

  1. 【FPGA学习】MATLAB与FPGA实现FIR滤波器

    本篇博客记录一下在matlab设计和在FPGA平台实现FIR滤波器的方法,平台是Xilinx的ZYNQ 参考: AMBA AXI-Stream Protocol Specification 使用mat ...

  2. Windows常用快捷键(但我本人不太熟知的)

    Shift+Ctrl+ESC: 打开任务管理器 Windows+E: 打开文件资源管理器 Windows+R: 运行文件 Windows+Tab: 切换应用程序 Shift+Delete: 永久删除

  3. 前端回血day24 flex子项伤的CSS属性

    取值 含义 order 可以通过设置order改变某一个flex子项的排序位置.所有flex子项的默认order属性值是0 flex-grow 属性中的grow是扩展的意思,扩展的就是flex子项所占 ...

  4. Word17 学生儿童医保扣款方式更新的通知

    1.课程的讲解之前,先来对题目进行分析,首先需要在考生文件夹下,将Wrod素材.docx文件另存为Word.docx,后续操作均基于此文件,否则不得分. 2.这一步非常的简单,打开下载素材文件,在[文 ...

  5. 实验一C语言开发环境使用和数据类型·运算符·表达式

    #include<stdio.h> int main(){ printf(" o \n"); printf("<H>\n"); prin ...

  6. 用浏览器打开pdf格式的文件默认全屏显示

    打开地址如 http://xxxxx.pdf 在文件地址后面添加#view=FitH,top,可实现全屏查看pdf文件. http://xxxxx.pdf#view=FitH,top,

  7. angular js 实现模糊查询并分页

    如果这篇文章能给你带来帮助,不胜荣幸,如果有不对的地方也请批评指正 共同进步,因为最近使用augular前段所以看了一下,为了加深印象,所以记录一下,废话不多说直接上代码. 首先来讲你可以使用page ...

  8. gitlab-CICD共享runner基本配置

    gitlab-CICD共享runner基本配置 使用docker部署runner 多个项目使用共享runner 部署机器与runner不在同一台服务器上(使用ssh部署) 部署runner 部署镜像 ...

  9. Python爬取网页上想要的数据

    1.源代码如下 from urllib.request import urlopen,Request import urllib.request import re from bs4 import B ...

  10. python安装及简单爬虫(爬取导师信息)

    1.下载: 解释器(我下的是3.8.2版本):https://www.python.org/downloads/ pycharm(我下的是2019.3.3版本):https://www.jetbrai ...