请问大家一个问题在一个function内部 最后return fn.apply(this,args) 这句话是什么意思?
发布于 8 年前 作者 Jonny0601 5928 次浏览 来自 问答

这是具体的 函数代码: var fs = require(‘fs’); var Thunk = function(fn) { return function() { var args = Array.prototype.slice.call(arguments); return function(callback) { args.push(callback); console.log(’================================’) console.log(this) console.log(’================================’) ** return fn.apply(this,args);** }; }; };

var readFileThunk = Thunk(fs.readFile); readFileThunk(’./index.js’,‘utf8’)(function(err, data) { console.log(data); }) 打印的this是undefined, 'return fn.apply(this,args) ’ 这句为什么这样写,或者它等同于什么?

1 回复

Function.prototype.apply => 每个函数都apply方法;call同样的。 这两个方法的意思跟字面一样,就是调用该函数。

  1. 第一个参数决定调用者,即传递函数内this所指向的对象,在需要绑定上下文(context)的时候就显得很有用。
  2. 第二个参数就是实际参数列表了,不同的是call需要挨个传入参数,而apply则可以以数组的形式传入,故而此处:fn.apply(this, args) 伪数组arguments[].slice处理成了Array类型的args
回到顶部