我想找出这个问题的答案:
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/