Jquery plugins 了解JavaScript函数和插件设置

Jquery plugins 了解JavaScript函数和插件设置,jquery-plugins,javascript,Jquery Plugins,Javascript,一段时间后我才开始编写JavaScript,我对插件构造函数的设置感到困惑。我通过这个链接寻求建议 我有兴趣了解此功能设置 我看到了以下三个类似的例子: (function(parameterOne, parameterTwo) { functionOne = function(...) { ... }, functionTwo: new function() { }, this.functionThree = function(...) {

一段时间后我才开始编写JavaScript,我对插件构造函数的设置感到困惑。我通过这个链接寻求建议

我有兴趣了解此功能设置

我看到了以下三个类似的例子:

(function(parameterOne, parameterTwo) {

    functionOne = function(...) {
       ...
   },

   functionTwo: new function() {
   },

   this.functionThree = function(...) {
   }

})()
我的问题如下:

什么时候使用函数一对函数二对函数三给出的构造?我怎样才能显式地调用functionOne、functionTwo或functionThree

我见过这样的函数:

(function(parameter) {

    functionFour = function(..) {
   },
   ....
})(document)
本例中的文档说明了什么?我对此感到困惑已久

我见过遵循这种结构的jQuery插件

(function($) {

  $.fn.myCustomPlugin: function(...) {
  }
})(jQuery)
为什么$s被传递给函数,而jQuery在最后被传递?我很抱歉,因为这对你们中的一些人来说可能是一些基本的问题,但这些问题已经困扰了我好几个星期了,我非常想得到任何我能得到的答案

谢谢

Kartik

功能参数一,参数二{

没有意义,因为您最终没有传递这些参数。此外,看起来您正在立即尝试创建匿名代码块-在某些情况下有意义,但您不需要这样做,除非您试图保护全局范围不受此代码块内发生的任何情况的影响

    functionOne = function(...) {
       ...
   },
这是一个命名函数,类似于var functionOne,仅在父函数或构造函数中有用

   functionTwo: new function() {
   },
更新:当您试图在此处创建实例时,这并没有什么意义。您完全可以立即实例化该函数声明中包含的内容,这与声明一个func是一样的。首先,然后使用运算符new,但在这种情况下,您得到的是一个对象而不是函数。请尝试:

var f = function() {};
console.log(f); // "function"
var f = new function() {}
console.log(f); // "objest"
该对象是构造函数的实例

   this.functionThree = function(...) {
   }
这是一个类的方法。一旦您使用运算符new实例化该类,您就可以从实例外部访问它。同样,当您使用它时。在类内部,请记住,每次实例化一个类时,它都会为该值保留内存。当这些实例的变量不同时,这是可以的,但如果它是一个方法,您最好将它添加到构造函数原型中,这样它只声明一次,并且不会为它保留新的内存块

})()
在这里,您通常会在内部传递您请求的参数,例如参数one、参数two

这是一种将上下文或任何对象传递到此匿名代码块的方法。在这种情况下,它看起来像一个接受window.document的插件,但它也可以接受DOM的任何其他部分。例如,如果您希望选择所有标记a并接收文档作为param,它将遍历window.document中的所有链接,但如果您传递$'somediv',this插件将仅在具有此id的div内的链接中进行迭代

(function($) {

  $.fn.myCustomPlugin: function(...) {
  }
})(jQuery)
这是一个很好的方法,可以确保$内的代码中有一个jQuery对象。例如,在Chrome中已经有一个本机函数$,或者在一些生产站点中,$可能是一个Prototype JS函数。但是在内部的示例中,请确保var$不是本机$,或者不是Prototype


通常,您不应该使用函数{…}自由-这只在我上面提到的保护全球环境的特定情况下使用。

请看这篇文章…并查看其中的其他副本链接。我的示例可能是错误的或不正确的,因为我对javascript不太了解。我边学边问,但这就是我问这个问题的原因。我明白了,我没有回答我的意思不是说很关键,我只是在解释你得到了什么:我可以问一下,如果可能的话,我将如何调用函数functionOne、FunctionII和functionThree吗?如果在函数名之后使用functionOne,例如functionOne,并使用call或apply方法调用函数。你可以通过usi获得一个函数实例,它是一个JS对象ng关键字new。请记住,这样做得到的是一个对象,而不是一个函数。在您的示例中,对所有对象的调用都是相同的-functionOneargs或functionTwo.callargs或this.functionThree.applyargs。
(function($) {

  $.fn.myCustomPlugin: function(...) {
  }
})(jQuery)