jQuery / Javascript如何处理此方法调用?

时间:2014-02-18 18:54:38

标签: javascript jquery

鉴于只有$.get的第一个参数是强制性的:

$.get(URL,data,function(data,status,xhr),dataType)

在这两个示例中,jQuery / Javascript如何将给定参数映射到正确的声明参数?

$.get("test.php", { name:"Donald", town:"Ducktown" });

$.get("test.php", function(data){
  alert("Data: " + data);
});

来自http://www.w3schools.com/jquery/ajax_get.asp

在Python中,如果跳过订单,则必须按名称调用参数。但是jQuery如何处理呢?

4 个答案:

答案 0 :(得分:2)

  

但是jQuery如何处理呢?

请查看the code

jQuery[ "get" ] = function( url, data, callback, type ) {
    // shift arguments if data argument was omitted
    if ( jQuery.isFunction( data ) ) {
        type = type || callback;
        callback = data;
        data = undefined;
    }

    return jQuery.ajax({
        url: url,
        type: "get",
        dataType: type,
        data: data,
        success: callback
    });
};

答案 1 :(得分:1)

它验证参数的输入并相应地执行操作。

答案 2 :(得分:1)

在JavaScript中,有两件事可以实现:arguments类似数组的对象和typeof运算符。所有函数都有一个名为arguments的类数组对象。您可以通过它访问传递给函数的所有参数,即使它们未在参数列表中命名。其次,您可以使用typeof运算符来确定参数的类型(objectfunctionstring等)。因此,jQuery使用arguments数组检测所有参数,然后使用typeof确定哪些参数。

答案 3 :(得分:1)

扩展@ Bergi的答案:

isFunction()看起来像:

isFunction: function( obj ) {
        return jQuery.type(obj) === "function";
    }

并展开,jQuery.type()看起来像:

type: function( obj ) {
        if ( obj == null ) {
            return String( obj );
        }
        return typeof obj === "object" || typeof obj === "function" ?
            class2type[ core_toString.call(obj) ] || "object" :
            typeof obj;
    }

您可以查看最新的jquery来源here