gpt4 book ai didi

javascript - 函数作为参数没有在原型(prototype)中定义但仍然可以传入?

转载 作者:行者123 更新时间:2023-12-02 14:05:07 25 4
gpt4 key购买 nike

这是我在 2016 年的书中找到的异步函数的典型实现。我们声明 var Obj,然后添加一个方法

Obj.prototype.doSomething(arg1_){}

然后我们称之为

test.doSomething(number, function(err,value){}

可以通过参数[]访问回调函数

var callback_ = arguments[arguments.length - 1];

所以即使回调函数没有在原型(prototype)中定义为参数,我们仍然可以将它们传入?那么我们可以传递任意数量的函数,即最多 255 个?

Here is a pastebin

var fib = function (n) {
if (n < 2) return n;
return fib(n - 1) + fib(n - 2);
};
var Obj = function() { };
Obj.prototype.doSomething = function(arg1_) {
var callback_ = arguments[arguments.length - 1];
callback = (typeof(callback_) == 'function' ? callback_ : null);
var arg1 = typeof arg1_ === 'number' ? arg1_ : null;
if (!arg1) return callback(new Error('first arg missing or not a number'));

process.nextTick(function() {
// block on CPU
var data = fib(arg1);
callback(null, data);
});
}
var test = new Obj();
var number = 10;
test.doSomething(number, function(err,value) {
if (err)
console.error(err);
else
console.log('fibonaci value for %d is %d', number, value);
});
console.log('called doSomething');

最佳答案

是的。不需要在 JavaScript 中声明所有参数。您可以在参数数组中检索。查看一些示例 here

您可以看到in this post参数的最大数量足够大。

关于javascript - 函数作为参数没有在原型(prototype)中定义但仍然可以传入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40112596/

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