如何在ES6中使用bind?
在预ES6编码方式(我假设这是ES5)中,我会这样做:
var app = {};
app.log = function(req, res) {
var respond = this.respond.bind(this, req, res);
return respond(400, 'no data received');
}
app.respond = function(req, res, status, message) {
console.log(req); // hello
console.log(status); // 400
console.log(message); // no data received
}
app.log('hello');但是我如何在ES6中做到这一点呢?
export default function log (req, res) {
var respond = this.respond.bind(this, req, res);
return respond(400, 'no data received');
}
function respond (req, res, status, message) {
console.log(req);
console.log(status);
console.log(message);
}当然,我会得到一个错误:
TypeError: Cannot read property 'respond' of undefined发布于 2016-07-17 06:37:43
在这种情况下,我认为你不必使用出口。做个课就行了。
class App {
log(req, res) {
var respond = this.respond.bind(this , req , res);
return respond(400, 'no data received');
}
respond(req, res, status, message) {
console.log(req);
console.log(status);
console.log(message);
}
}
var app = new App();
app.log('hello');https://stackoverflow.com/questions/38418449
复制相似问题