我可以在创建ES6类的实例后立即将实例绑定到非静态方法吗



将前两行组合为一行有什么方法吗?我觉得强迫MarkupPreprocessingHelper的用户写两行不舒服。。。

let markupPreprocessingHelper = new MarkupPreprocessingHelper(config);
let preprocessTemplates = markupPreprocessingHelper.takeCareAboutMarkupPreprocessing.bind(markupPreprocessingHelper);
gulp.task('Development run', gulp.series(
preprocessTemplates,
// ...
));

如果您制作函数的反弹副本并将其保存为实例属性,则可以将其传递,用户无需手动绑定:

function someClass(name){
this.name = name
// make a prebound copy of myFunction
this.preBound = this.myFunction.bind(this)
}
someClass.prototype.myFunction = function(){
console.log(this.name)
}
let p = new someClass("Mark")
// now you can pass a reference of it around without losing the binding
let fn = p.preBound
setTimeout(fn, 500)

最新更新