apply的手动实现

简介: apply的手动实现

什么是 apply

apply 和 call 高度相似,只是接收参数的方式不一样。

  • call 是参数依次排列
  • apply 是参数为一个数组

手动实现

注意点与 call 类似

Function.prototype.apply = function (context, arr) {
  var context = Object(context) || window;
  context.fn = this;

  var result;
  if (!arr) {
    result = context.fn();
  } else {
    var args = [];
    for (var i = 0, len = arr.length; i < len; i++) {
      args.push("arr[" + i + "]");
    }
    result = eval("context.fn(" + args + ")");
  }

  delete context.fn;
  return result;
};
目录
相关文章
|
2月前
|
JavaScript 前端开发
call和apply的区别
call和apply的区别
|
10月前
|
Python
apply函数的用法
apply是pandas处理数据经常用到的函数。我们可以用DataFrame的apply函数实现对多列、多行的操作。可通过axis设置参数,设为1是对列进行操作,参数axis设为0是对行操作。apply经常跟lambda一起使用,非常方便,大大提高了效率。
106 0
|
3月前
call\apply\bind详解
call\apply\bind详解
19 0
|
JavaScript 前端开发
call和apply与this的关系
call和apply与this的关系
37 0
|
Serverless Perl
R|apply,tapply
R|apply,tapply
|
前端开发
|
JavaScript 前端开发
【build your own xxx】实现你自己的call和apply
【build your own xxx】实现你自己的call和apply
【build your own xxx】实现你自己的call和apply
|
Java Scala 开发者
apply 方法的使用|学习笔记
快速学习 apply 方法的使用。
131 0
|
JavaScript
一步一步实现call和apply方法,超简单!
前言 this 指向问题一直是一个老生常谈的问题了!我们对它可以说是又爱又恨,因为 this 指向常常没有按照我们的想法去指向谁,导致程序无缘出现许多 bug。所以我们常常直接强制改变程序中的 this 指向,我们常用的方法有 bind、apply 和 call,bind 与其它两个稍许不同,所以我们本篇文章专门讲解 call 和 apply 方法,并且手动模拟实现它们。
152 0
一步一步实现call和apply方法,超简单!