/**
* Simple bind, faster than native
*/
function bind (fn, ctx) {
function boundFn (a) {
var l = arguments.length;
return l
? l > 1
? fn.apply(ctx, arguments)
: fn.call(ctx, a)
: fn.call(ctx)
}
// record original fn length
boundFn._length = fn.length;
return boundFn
}
大概意思我懂,但是a
是从哪来的?
这个bind
有什么意义?
1
epkT6QJ3RSaz6AnJ 2018-08-21 20:11:12 +08:00
这个显然不是标准的 bind,应该是 vue 的私有实现,性能优化了。
|
2
epkT6QJ3RSaz6AnJ 2018-08-21 20:11:18 +08:00
|
3
epkT6QJ3RSaz6AnJ 2018-08-21 20:14:46 +08:00
|
4
epkT6QJ3RSaz6AnJ 2018-08-21 20:15:58 +08:00 1
新的注释了解下,浏览器应该没有性能问题了,只是 polyfill
|
5
mcfog 2018-08-21 20:26:15 +08:00 via Android
忘记是 underscore 还是 backbone 了还列举了 2 / 3 / 4 / 5 个参数的 case 呢 23333
|
6
zhzer 2018-08-21 20:29:57 +08:00
这么写,是因为 apply 有性能问题吗?
|
7
thianda OP @zhzer 正如 @epkT6QJ3RSaz6AnJ 所回复,现在只是为了兼容旧版做的 polyfill
|
8
xieranmaya 2018-09-09 18:56:52 +08:00 via Android
就是把只接收一个参数的情况单列出来
node 的 event emmiter 里也有这种用法 把传一个,两个,三个,甚至四个的情况分别列出来,更多的才用 apply |