gpt4 book ai didi

javascript - underscore.js 如何为函数创建别名?

转载 作者:行者123 更新时间:2023-11-29 21:37:56 26 4
gpt4 key购买 nike

例如,_.each 有一个别名 _.forEach

我可以调用 [1, 2, 3].forEach(alter),但是当我调用 [1, 2, 3].each(alert) 时,它说

TypeError: [1, 2, 3].each is not a function

我在源码中没有找到forEach的定义,那么underscore.js是怎么做到的呢?

最佳答案

常规forEach就此而言,与 _.forEach_.each 不同。标准 [].forEach 是自 ES5 以来作为 Array API 一部分的 native 函数。 (它在 Array 原型(prototype)上)

_.forEach 的情况下,它实际上并没有使用 [].forEach 方法来使其向后兼容(ES5 之前),所以它只是使用了一个for 循环代替。

就别名而言,Underscore 通过将多个变量指向同一事物来创建别名。

您可以在 section 20 中清楚地看到所有这些注释来源:

// alias _.each and _.forEach to point to the same function
_.each = _.forEach = function(obj, iteratee, context) {
// ...
if (isArrayLike(obj)) {
// use a for loop to perform the iteration
for (i = 0, length = obj.length; i < length; i++) {
iteratee(obj[i], i, obj);
}
} else {
// ...

下面是下划线的一个简单例子:

var _ = {};                                     // create our dummy Underscore object    
_.each = _.forEach = function(arr, callback) { // alias _.each and _.forEach to loop and do callbacks
for (var i = 0, l = arr.length; i < l; i++) {
callback(arr[i], i);
}
}

var a = ['a', 'b', 'c'];
_.each(a, function(item, index) {
console.log(index + ': ' + item);
});

关于javascript - underscore.js 如何为函数创建别名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34326398/

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