博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bind封装
阅读量:7027 次
发布时间:2019-06-28

本文共 691 字,大约阅读时间需要 2 分钟。

原理:通过apply或者call方法来实现。

(1)初始版本

Function.prototype.bind=function(obj,arg){

  var arg=Array.prototype.slice.call(arguments,1);

  var context=this;

  return function(newArg){

    arg=arg.concat(Array.prototype.slice.call(newArg));

    return context.apply(obj,arg);

  }

}

(2) 考虑到原型链

为什么要考虑?因为在new 一个bind过生成的新函数的时候,必须的条件是要继承原函数的原型

Function.prototype.bind=function(obj,arg){

  var arg=Array.prototype.slice.call(arguments,1);

  var context=this;

  var bound=function(newArg){

    arg=arg.concat(Array.prototype.slice.call(newArg));

    return context.apply(obj,arg);

  }

  var F=function(){}

  //这里需要一个寄生组合继承

  F.prototype=context.prototype;

  bound.prototype=new F();

  return bound;

}

转载于:https://www.cnblogs.com/CoderZX/p/10650969.html

你可能感兴趣的文章
hdu1412
查看>>
后仿真笔记 - ise 联合 modelsim
查看>>
python @property
查看>>
XCOJ 1168 (搜索+期望+高斯消元法)
查看>>
紫书 例题11-9 UVa 1658 (拆点+最小费用流)
查看>>
【天池大数据赛题解析】资金流入流出预测(附Top4答辩ppt)
查看>>
广告点击率预测 [离线部分]
查看>>
CodeForces 659F Polycarp and Hay
查看>>
Servlet客户请求的处理:HTTP请求报头HttpServletRequest接口应用
查看>>
ORACLE同义词使用
查看>>
pat 1014 1017 排队类问题
查看>>
Java常用系统变量收集
查看>>
常见负载均衡的优点和缺点对比(Nginx、HAProxy、LVS)
查看>>
Mac电脑C语言开发的入门帖
查看>>
上班两周
查看>>
洛谷P4242 树上的毒瘤
查看>>
导数和微分
查看>>
JQ实现树形菜单点击高亮
查看>>
函数动态参数
查看>>
const 与readonly的异同
查看>>