gpt4 book ai didi

javascript - 如何传递参数并应用于函数?

转载 作者:行者123 更新时间:2023-11-29 20:07:09 25 4
gpt4 key购买 nike

我有一个 Uint8Array,我想在其上使用 slice 方法。

所以我利用了这样的数组切片方法:

Array.prototype.slice.call(array, start, end);

现在我想把一些常用的功能外包出去。
我试过

var utils = {
slice: function() {
return Array.prototype.slice.apply(this, arguments);
}
};

但显然我误解了它的真正工作原理。任何人都可以向我解释这个以及如何实现它以开始工作吗?

最佳答案

你的问题在于 this 不是你想的那样。如果调用 utils.slice(foo, 1, 2)this 将是 utils

根据你想如何调用它,你可以将你想要操作的对象作为第一个参数传递,然后你会这样做:

var utils = {
slice: function() {
// The object we're operating on
var self = arguments[0];
// The rest of the arguments
var args = Array.prototype.slice.call(arguments, 1);

return Array.prototype.slice.apply(self, args);
}
};

用法:

var someSlice = utils.slice(someArray, 2, 14);

另一个(可能更清晰)选项是只使用命名参数:

var utils = {
slice: function(array, from, to) {
return Array.prototype.slice.call(array, from, to);
}
};

这将以相同的方式工作。

更新:我很好奇为什么 Uint8Array 没有 slice,我发现了 subarray :

Int8Array subarray(
long begin,
optional long end
);

注意

Note: Keep in mind that this is creating a new view on the existing buffer; changes to the new object's contents will impact the original object and vice versa.

这可能就是您想要的——我打赌它会更有效率——如果您不需要复制数据,那就是!

关于javascript - 如何传递参数并应用于函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11561673/

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