Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.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
Javascript 使用';这';使用集合选择器将函数添加到变量中_Javascript_Jquery - Fatal编程技术网

Javascript 使用';这';使用集合选择器将函数添加到变量中

Javascript 使用';这';使用集合选择器将函数添加到变量中,javascript,jquery,Javascript,Jquery,比如说,我有一个变量,它被设置为所需的选择器。然后,为了保持代码整洁,我将函数添加到该变量中。那么,在函数中使用链接选择器访问原始变量,以及访问我将来可能使用“this”添加的函数,这是一个好主意吗。如果有更好的方法来完成它,请继续,我想知道 var elementzero = $('.element-class'); elementzero.initialize = function() { // is there possible to access elementzero sel

比如说,我有一个变量,它被设置为所需的选择器。然后,为了保持代码整洁,我将函数添加到该变量中。那么,在函数中使用链接选择器访问原始变量,以及访问我将来可能使用“this”添加的函数,这是一个好主意吗。如果有更好的方法来完成它,请继续,我想知道

var elementzero = $('.element-class');

elementzero.initialize = function() {
    // is there possible to access elementzero selector by 'this'
    $(this).addClass('loaded');

    // and call elementzero.someFunction using the same 'this'
    this.someFunction();
}

elementzero.someFunction = function() {
    console.log('someFunction');
}

elementzero.initialize();

像这样向jQuery对象添加特殊函数可能不是一个好主意。最好将jQuery和层分开

也许您可以这样定义控制器对象:

var elementzero = $('.element-class');
var controller = {
    initialize: function() {
        elementzero.addClass('loaded');
        controller.someFunction();
    },
    someFunction: function() {
        console.log('someFunction');
    }
};

controller.initialize();

您可能还需要研究JavaScript框架,以帮助您构建代码。

是的,这是可行的。JavaScript通常就是这样工作的。注意,您不需要使用
$(this)
,因为
this
已经是jQuery对象。只需使用
this
。至少,如果添加jQuery函数,请将其构造为
$.fn
对象上的插件…@War10ck使用
$.fn
我想避免。@Jonathan.Brink但是,我可以问一下,为什么使用
ad-hoc
函数是一个坏主意。@Katherine随着代码库的增长,如果继续在jQuery实例中添加ad-hoc函数,那么可能很难准确地记住jQuery中的内容以及该特定实例的内容。如果您将自己的函数放在一个单独的地方,其他jQuery可以调用这些函数,那么您的代码也将更加可重用instances@Katherine那肯定行。它仍然强烈建议签出一个JavaScript框架来帮助组织代码……这将是未来维护的一个巨大胜利。这里有一个很好的起点来了解外面的情况: