需要绑定或申请部分应用
The need for bind or apply for partial application
我正在编写函数式javascript研讨会的部分应用程序部分。
我特别需要:
使用部分应用程序创建一个函数,将第一个参数修复为console.log。
示例输出:
var info = logger('INFO:');
info('this is an info message');
// INFO: this is an info message
我天真的解决方案工作,但不使用apply或bind:
function logger(namespace) {
return (args) => console.log(namespace, args);
};
const info = logger('INFO:');
info('this is an info message');
// INFO: this is an info message
建议的解决方案:
var slice = Array.prototype.slice
function logger(namespace) {
return function() {
console.log.apply(console, [namespace].concat(slice.call(arguments)))
}
}
我错过了什么?为什么需要bind或apply ?
推荐的解决方案将传递所有参数(并且可能在编写时不考虑ES2015)。你的解只会通过第一个参数。我想你是在找(...args) => console.log(namespace, ...args)
相关文章:
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- Canvas Html5绘图应用程序,移动画布会导致重大问题
- Emberjs应用程序加载在除Index之外的所有路由上
- 使用电话间隙在Android应用程序中显示SQL Lite的数据
- 跟踪在页面加载时应用内联样式的JavaScript
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- 如果文本字段为空,则使用JavaScript应用CSS样式
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- 为什么在单独的函数中应用时转换会闪烁/断断续续(D3)
- angular 1.5应用程序中的导航栏
- 在Web应用程序中使用Highcharts javascript
- 如果30秒未单击,请应用CSS一次,将其删除,然后重新迭代
- 脸书应用程序请求:发生错误.请稍后重试
- 应用程序已意外停止,请重试安卓
- 带有ajax请求和python交互的谷歌应用程序引擎
- 如果正在更新应用程序缓存,请阻止ajax调用
- 请建议我应该为我的应用程序提供哪种浏览器兼容性
- Google已经禁用了此应用程序的地图api.有关更多信息,请参阅服务条款
- 如果未使用javascript安装应用程序,请创建备用URL
- twitter应用程序开发:PHP或javascript..请帮忙