繁体   English   中英

Javascript函数就像对象,即“$”可以用作函数,例如$()以及对象$

[英]Javascript Function like Objects i.e. “$” can be used as a function e.g. $() as well as an object $

标题中的问题。 我一直想知道并且未能从jQuery源代码中找到答案。 如何做到这一点。

重申一下。 在jQuery中:“$”如何成为一个函数,例如“$()”以及一个对象“$”。

我可以像这样或另一种方式创建它...

var $ = function(){
    return {each:function(){console.log("Word")}}
}
// $.each(); FAIL!
$().each(); // Word


var $ = {
    each:function(){console.log("Word")}
}
$.each(); // Word
//$().each(); FAIL!

从基本功能开始:

var $ = function(expr) { return $.select(expr); }

然后,为其添加额外的功能:

$.select = function(expr)
{
    console.log("selecting " + expr);
    return $; // TODO: perform selection
};

$.each = function()
{
    console.log("Called $.each()");
};

您可以通过查看源代码来了解如何在jQuery中使用此模式:

var jQuery = function( selector, context ) {
    // The jQuery object is actually just the init constructor 'enhanced'
    return new jQuery.fn.init( selector, context );
}

jQuery.fn = jQuery.prototype = {
    init: function( selector, context ) {
        var match, elem, ret, doc;

        // Handle $(""), $(null), or $(undefined)
        if ( !selector ) {
            return this;
        }

        // contents of init() here
    }
}

在javascript中,函数是一个对象。 你可以用属性,其他函数(方法)创建一个函数。 只需在Javascript中编写它,然后查看myfunc的类型

var myfunc = function() {
 //do stuff
}

当你在Firebug中查看myfunc的类型时,你会看到myfunc是一个对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM