javascript - 通用功能?

标签 javascript node.js

我想找出这个问题的答案:

Without using Javascript's bind function, implement the magic function so that:

var add = function(a, b) { return a + b; }
var addTo = add.magic(2);

var say = function(something) { return something; }
var welcome = say.magic('Hi, how are you?');

addTo(5) == 7;
welcome() == 'Hi, how are you?';

我想我需要使用电话或申请,但我只是不知道,如果有人能指出我正确的方向或提供一些文献,我将不胜感激。

最佳答案

你可以使用闭包,和apply function

Function.prototype.magic = function(){
  var self = this;
  var args = Array.from(arguments);
  
  return function(){
    return self.apply(null, args.concat(Array.from(arguments)));
  }
}


var add = function(a, b) { return a + b; }
var addTo = add.magic(2);

var say = function(something) { return something; }
var welcome = say.magic('Hi, how are you?');

console.log(addTo(5) == 7);
console.log(welcome() == 'Hi, how are you?');

你也可以看看Polyfill for bind MDN 上的函数

关于javascript - 通用功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34994441/

相关文章:

javascript - Angularjs 在指令中获取输出后将值分配给 Controller

javascript - JavaScript 模块模式中的 $(this)

javascript - 使用复选框将输入字段中的实时文本添加到另一个 div

node.js - 有没有办法反向代理随机子域

javascript - 如何更改带有复选框的网页上实时选择的总学分?

javascript - 管理数据库中用户之间的关系

javascript - 扩展 typescriptdefineTyped 定义文件

javascript - 在 <% 标签内交织 EJS 和 Javascript 变量

node.js - 如何在本地使用 grunt 在生产模型中运行 Mean.JS

javascript - Bluebird Promise 可以在 node.js 中与 redis 一起使用吗?