gpt4 book ai didi

javascript - 调用匿名函数的 MDN 示例

转载 作者:行者123 更新时间:2023-11-30 17:03:52 25 4
gpt4 key购买 nike

伙计们,我想了解为什么 call 真的有效,我是面向对象的 java 脚本、this 关键字和 call 等函数的新手。

我在一个在线程序中找到了下面一行:

this.tabs = [].slice.call( this.el.querySelectorAll( 'nav > ul > li' );

我尝试理解每个函数并且非常成功,实际上下面的线程帮助了我:

Link

但是理解 call 有点困难,尤其是在看了 MDN call doc's 之后。 .

我不太理解 MDN 文档中的这个示例:

使用调用来调用匿名函数:

var animals = [
{ species: 'Lion', name: 'King' },
{ species: 'Whale', name: 'Fail' }
];

for (var i = 0; i < animals.length; i++) {
(function(i) {
this.print = function() {
console.log('#' + i + ' ' + this.species
+ ': ' + this.name);
}
this.print();
}).call(animals[i], i);
}

现在我理解了对象字面量,我理解了 for 循环,我理解了 IIFE,我理解了 this.print();函数被调用,

我不明白的是下面一行:

call(animals[i], i);

以及传递给它的参数。

亲切的问候。

最佳答案

(function () { ... }).call(animals[i], i) 调用函数 (function () { ... }) “在”对象 animals[i] 上(即:在调用范围内,this 将是 animals[i]),使用参数 i

换句话说,它等同于:

animals[i].f = function () { ... };
animals[i].f(i);

除了不需要设置animals[i].f

关于javascript - 调用匿名函数的 MDN 示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28388891/

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