请问大家一个问题在一个function内部 最后return fn.apply(this,args) 这句话是什么意思?
发布于 9 年前 作者 Jonny0601 6493 次预览 最后一次回复是 9 年前 来自 问答
这是具体的 函数代码: 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同样的。 这两个方法的意思跟字面一样,就是调用该函数。this所指向的对象,在需要绑定上下文(context)的时候就显得很有用。call需要挨个传入参数,而apply则可以以数组的形式传入,故而此处:fn.apply(this, args)伪数组arguments被[].slice处理成了Array类型的args