Javascript Jquery.Recup是什么意思?
嗯,我对巫婆说“$.Recup…”这句话感到困惑,我不知道为什么它的名称与插件名称相同,以及它的用途Javascript Jquery.Recup是什么意思?,javascript,jquery,Javascript,Jquery,嗯,我对巫婆说“$.Recup…”这句话感到困惑,我不知道为什么它的名称与插件名称相同,以及它的用途 (function ($) { $.fn.Recup = function () { var parametros = { }; var tsic = true; $.Recup = function (opciones) { var Metodos = { };
(function ($) {
$.fn.Recup = function () {
var parametros = {
};
var tsic = true;
$.Recup = function (opciones) {
var Metodos = {
};
return Metodos;
};
$.Recup.anterior = function () {
};
$.Recup.siguiente = function () {
}
})(jQuery);
我指的是这段代码,$.Recup
到底是做什么的?如果有人给我举个例子就太好了
$.Recup = function (opciones) {
var Metodos = {
};
return Metodos;
};
这是一个jQuery插件
jQuery.fn
是jQuery原型的别名。因此,这一行允许您在jQuery实例上调用Recup
函数:
$('#myid').Recup();
这里是。在这种情况下,它似乎是一个有问题的插件设计-特别是因为
$.Recup
在第一次调用$.fn.Recup
之前不会被分配
然而,如果它是“适当和/或写得好的”,则是另一个需要(预期)使用上下文的问题。无论如何,我会拒绝这段代码,因为它散发着被误解的设计和广泛范围的副作用的味道
无论如何,函数的分配方式决定了如何调用该方法
// let $ be jQuery, then:
$.fn.foo = function () { console.log("foo") }
$.bar = function () { console.log("bar") }
$.foo() // TypeError: $.foo is not a function
$.bar() // -> "bar"
$("sel").foo() // -> "foo"
$("sel").bar() // TypeError: $(..).bar is not a function
也就是说,$.fn.foo
类似于-它基于当前选择的元素(由this
表示)执行某些操作。另一方面,$.bar
类似于—它提供了一种在常规集合上迭代的方法,但与(以前)选定的特定元素集无关
一般来说,一个插件应该只向$添加一个条目。fn
,但是直接添加到$
可能有助于公开实用程序功能-这一定要小心
以下是修复错误泄漏数据问题的两种方法:
$.fn.Recup = function () {
var parametros = ..
var tsic = true;
// Most trivial change; then use recup in this scope
// (or child scopes) only. There is no $.Recup - yay!
var recup = function (opciones) {
};
// ..
}
或者,只公开为本地方法:
$.fn.Recup = function () {
var parametros = ..
var tsic = true;
function anterior () {
}
function siguiente () {
}
// Just use simple functions in scope
}
Recup
是特定插件的标识符,没有任何特殊含义。更改标题和问题以反映“$.fn.Plugin vs.$.Plugin”以获得更好的结果。谢谢,我正在分析此脚本,我输入的代码是其中的一部分,我以一般方式编写,在真实代码上,它表示$。Reproductor
而不是$。Recup
并且在其内部有一个AtributeIniciar:
其中包含一个函数。这是从html代码中通过以下方式调用的:$.Reproductor().ini()代码>毕竟它使用了$内的$.Reproductor
。fn.Reproductor
谢谢again@FrankGonzalesPerez是的,这是糟糕的编码,因为$.Reproductor泄漏到了它使用的范围之外。使用局部变量或仅将方法提取到普通函数中,而不是指定给$.Reproductor
(这是一种仅适用于特定实例的全局副作用)。@FrankGonzalesPerez我已使用两个选项更新了我的答案,这两个选项都是关于泄漏到$。无论什么,这是我在提交时会拒绝的代码。