- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在努力思考第 57 页上 Javascript ninja 中的一些代码。
function forEach(list, callback) {
for (var n = 0; n < list.length; n++) {
callback.call(list[n], n); //makes the current element the function context of callback???
}
}
var weapons = ['shuriken', 'katana', 'nunchucks'];
forEach(weapons,
function(index) {
assert(this == weapons[index], "Got the expected value of " + weapons[index]);
}
);
我可以在不使用 call 方法的情况下在回调中传递数组的索引,这是有道理的。我不明白的是为什么我要使用当前元素作为函数上下文。这是要完成什么?
我也很难理解如何做到这一点。我假设调用方法将列表项视为对象而不是数组中的元素。但我不确定这是否正确。
我的另一个想法是,通过不将函数上下文分配给当前元素,函数上下文将是 forEach
函数。我不确定如果有的话会导致什么麻烦,也许这与更改函数上下文的原因有关。
1 Câu trả lời
What I don't understand is why would I want to use the current element as the function context.
这允许您做的是在回调函数中使用 cái này
来引用每个相应的当前元素。这与 jQuery $.each()
的约定相同。方法和其他一些 jQuery 方法使用(你的书的作者是 jQuery 的创造者)。
它允许你这样做:
forEach([1, 2, 3], function() {
console.log(this * 2); // 'this' refers to the current element
});
Đầu ra:
2
4
6
当然,另一种非常好的方法是将当前元素作为参数传入,而不指定函数上下文。这就是内置的 Array.prototype.forEach
所做的(本质上)。该方法的简化版本如下所示:
function forEach(list, callback) {
for (var i = 0; i < list.length; i++) {
callback(list[i], i);
}
}
forEach([1, 2, 3], function(item) {
console.log(item * 2); // 'item' is the current element
});
这两种方法都没有明显优于另一种方法。只是有些人发现为此目的使用 cái này
更方便。
I also am having a hard time understanding how this could be done. I'm assuming that the call method is looking at the list item as an object and not as the element in the array. But I'm not sure that's correct.
传递给call()
的函数上下文可以是任何东西。它只是确定 cái này
在函数执行时(大部分时间)采用的值。
My other thought was that by not assigning the function context to the current element the function context would be the forEach function.
不,如果函数上下文未在此处指定,则在严格模式下它将是 vô giá trị
,或者在 quirks 模式下是 cửa sổ
(假设代码在浏览器中运行) .两者都不会在这里特别有用。
I'm not sure what trouble that would cause if any and maybe that had something to do with the reason for changing the function context.
只有当有人试图以任何有意义的方式在他们的回调中使用 cái này
时才会造成麻烦。改变它的原因是我上面解释的。
关于Javascript 忍者 : Current element in array as function context,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28021944/
我将 Ninject 与 ASP.NET MVC 4 一起使用。我正在使用存储库并希望进行构造函数注入(inject)以将存储库传递给其中一个 Controller 。 这是我的存储库界面: publ
在我们的 MVC 项目中,我们广泛使用 Ninject。由于未知原因,StandardKernel 开始抛出 NotSupportedException 并显示消息“不支持具有 null 或空名称的模
我正在逐字逐句地遵循 Yocto Project 2.4.2 快速入门指南,但当我尝试为 Intel MinnowBoard 构建时它失败了。我正在 Virtual Box 中的 Ubuntu 16.
我正在使用 VS 2017 的新“打开文件夹”功能,通过 CmakeSettings.json 自动构建 cmake。 代码是用C11写的,所以我需要用gcc(来自mingw-64)编译。我创建了一个
您可以将 Ninject 2.0 与 VS2010 RC1 一起使用吗? 最佳答案 我有类似的问题...尝试针对完整的 .NET 4 框架,而不是客户端配置文件。 据我了解 System.Web 在
我通过以下方式获得源代码(chrome) $ glient sync 运行所有命令请求: - gclient config ...... - GYP_GENERATORS ... -
在我们的作业中发现 here我们正在创建一款名为“牛仔、忍者、熊”的游戏,本质上是“石头、剪子、布”。所以我有两个问题。 1.) 如何将 c、n 或 b 分配给程序生成的随机数 1、2 或 3? 2.
我正在努力思考第 57 页上 Javascript ninja 中的一些代码。 function forEach(list, callback) { for (var n = 0; n < l
我刚刚从 NuGet 安装了新的 Ninject.MVC3 并试图让它在我的 asp.net mvc 3 应用程序中工作,但是我在浏览我的网站时不时收到这个奇怪的错误: [InvalidOperati
我想创建带有一点自定义辐条的饼图。 我想要实现的是在辐条上方显示名称 od 数据点,在辐条下方显示值。现在我知道如何用 func sChart(_ chart: ShinobiChart, label
尝试按照 ubuntu 16.04 x64 上的 android 文档从 aosp 构建 android,jdk 和工具链安装完成,但构建在几分钟后停止。这是构建日志: e@ubuntu:/e/aos
我一直在使用 Bob Cravens 博客中描述的存储库模式来创建我的应用程序,但我有点新,仍然在寻找解决方法。我想将我的 DataService 对象注入(inject)到我的 ViewModel
Tôi là một lập trình viên xuất sắc, rất giỏi!