84669 人学习
152542 人学习
20005 人学习
5487 人学习
7821 人学习
359900 人学习
3350 人学习
180660 人学习
48569 人学习
18603 人学习
40936 人学习
1549 人学习
1183 人学习
32909 人学习
function bind(fn, obj) { return function() { return fn.apply(obj, arguments); }}
我的问题是:
1.能不能写成像下面这样
function bind(fn, obj) { return fn.apply(obj, arguments);}
2.如果不能,是为什么,这样写的话与第一段代码有什么区别,会造成什么问题
3.能不能写个栗子举例一下
用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)); }}
用JavaScript封装bind函数-PHP中文网问答-用JavaScript封装bind函数-PHP中文网问答
围观一下哦,学习一下。
1.不能
2.因为你这个样子,就等于直接执行了fn,而不是生成一个可执行的函数。
3.栗子:
错误栗子:
新鲜可食的栗子: