Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是init.apply和方法[method]。默认情况下,应用javascript行是_Javascript_Jquery_Jquery Plugins - Fatal编程技术网

是init.apply和方法[method]。默认情况下,应用javascript行是

是init.apply和方法[method]。默认情况下,应用javascript行是,javascript,jquery,jquery-plugins,Javascript,Jquery,Jquery Plugins,我试图学习jquery插件,在这个过程中,我试图首先理解一些jquery插件。我读过一些插件,在插件的开头我遇到了一些常见的代码微调 if (methods[method]) { return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); } else if (typeof method === 'object' || !method) { return methods.init

我试图学习jquery插件,在这个过程中,我试图首先理解一些jquery插件。我读过一些插件,在插件的开头我遇到了一些常见的代码微调

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');
 }
谁能告诉我

  • 我们在构建插件时必须遵循这一点吗
  • 我已经注意到控制台不会在任何时候出现

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

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

  • 为什么要用apply调用init方法呢 为什么像这样调用:
    methods.init.apply(这是参数)
    为什么不这样:
    methods.init(参数)
  • 我读过这篇文章,但不太清楚。请任何人解释一下

  • 这很难解释,但我会尽力的

    正如您所知道的那样,
    apply
    method接受2个参数。首先是函数的上下文
    ,其次是函数参数数组

    上下文
    类似于对象自身的引用,我们可以称之为
    函数范围
    。请参阅函数中的此

    显示的这段代码必须使用apply方法,因为它们要设置被调用函数的
    上下文。我确信调用的函数是用来
    this
    做一些事情的

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

    希望这有帮助

    有关更多信息,请阅读