作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
例如,_.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/
我是一名优秀的程序员,十分优秀!