用JavaScript封装bind函数
phpcn_u699
phpcn_u699 2017-03-06 13:16:07
0
2
791
function bind(fn, obj) { return function() { return fn.apply(obj, arguments); }}

我的问题是:

1.能不能写成像下面这样

function bind(fn, obj) { return fn.apply(obj, arguments);}

2.如果不能,是为什么,这样写的话与第一段代码有什么区别,会造成什么问题

3.能不能写个栗子举例一下


phpcn_u699
phpcn_u699

全部回覆 (2)
数据分析师

用JavaScript封裝bind函數-PHP中文網問答-用JavaScript封裝bind函數-PHP中文網問答

圍觀一下哦,學習一下。

    巴扎黑

    1.不能

    2.因为你这个样子,就等于直接执行了fn,而不是生成一个可执行的函数。

    3.栗子:

    错误栗子:

    function bind(fn, obj) { return fn.apply(obj, arguments);}function func(){ console.log(this.a);}// 期望结果是 bind(func, { a:1 })() 输出1bind(func, { a:1 }); // 直接输出1

    新鲜可食的栗子:

    Function.prototype.bind = Function.prototype.bind || function bind(context, ...args){ let fn = this; return function(...newArgs){ fn.apply(context, [].concat(args, newArgs)); }}


      最新下載
      更多>
      網站特效
      網站源碼
      網站素材
      前端模板
      關於我們 免責聲明 Sitemap
      PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!