gpt4 book ai didi

javascript - 默认情况下是 init.apply 和 methods[method].apply javascript 行

转载 作者:行者123 更新时间:2023-11-30 12:55:58 24 4
gpt4 key购买 nike

我正在尝试学习 jquery 插件,在此过程中我试图先了解一些 jquery 插件。我读过几个插件,并在插件开头遇到了几个常见的代码 spinnet。

if (methods[method]) {
return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
} else if (typeof method === 'object' || !method) {
return methods.init.apply(this, arguments);
} else {
$.error('Method ' + method + ' does not exist on jQuery.jModalbox');
}

谁能告诉我,

  1. 是这样吗,我们在构建插件时必须遵循这个
  2. 我观察到控制台不会出现

    返回方法[方法].apply(this, Array.prototype.slice.call(arguments, 1));

    那么为什么我们需要 if 部分。

  3. 为什么用 apply 调用方法 init,我的意思是 为什么这样调用:methods.init.apply(this, arguments); 为什么不这样:methods.init(arguments);
  4. 我读过这个apply() ,但不清楚。请任何人解释

最佳答案

这很难解释,但我会尽力而为。

如您所知,apply 方法有两个参数。首先,函数上下文,其次,函数参数数组

context 就像是对象自身的引用,我们可以称之为函数作用域。函数中引用了this

您显示的这段代码必须使用 apply 方法,因为它们要设置被调用函数的 context。我真的确定被调用的函数使用 this 来做某事。

如果您直接调用函数,它将不会引用您想要的 this。这就是为什么他们必须使用应用而不是直接调用的原因。

希望对您有所帮助!

有关更多信息,您可以阅读 this

关于javascript - 默认情况下是 init.apply 和 methods[method].apply javascript 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19112232/

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