gpt4 book ai didi

javascript - 这样做有什么缺点: adding a new function in prototype that returns the same function with arguments applied

转载 作者:行者123 更新时间:2023-12-02 17:30:50 25 4
gpt4 key购买 nike

很多时候,在 javascript 中通过引用传递函数时,通常我必须编写:

something.onclick = function(){
callback(3);
};

但我总是想这样做:

something.onclick = 回调...在此处放置参数

所以基本上我一直想通过参数传递对函数的引用,这样它就不会立即执行。

最近经过思考和环顾四周,我做了这个..

Function.prototype.pass = function(){
var args=arguments, func = this;
return function(){ func.apply(this,args);}
};

现在我可以添加回调而无需编写如下占位符函数:

eleA.onclick(logWhichEle.pass('A'));
eleB.onclick(logWhichEle.pass('B'));
eleC.onclick(logWhichEle.pass('C'));

当我还是个新人时,我尝试这样做,尽管我知道它不会起作用,但我希望它能以某种方式起作用..

eleA.onclick(logWhichEle('A'));

但它只是返回未定义。

那么上面的解决方案不安全吗?我可以进一步做些什么来使其更安全。就像不会无意中破坏某人的代码一样。

最佳答案

您还可以避免影响函数原型(prototype)。方法如下:

function callbackWrapper() {
var args = Array.prototype.slice.call(arguments, 0), fn = args.shift();
return function() { return fn.apply(null, Array.prototype.concat.apply(args, arguments)); };
}

var adderTo1 = callbackWrapper(function(a, b) { return a + b; }, 1);
alert(adderTo1(2));

关于javascript - 这样做有什么缺点: adding a new function in prototype that returns the same function with arguments applied,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23073668/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com