JS参数可以少传吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS参数可以少传吗?相关的知识,希望对你有一定的参考价值。

参考技术A 当函数中用不到第三个参数的时候可以只传两个参数
但是当一个函数有3个参数,而调用这个函数的时候只给它传两个参数时,第三个参数的值默认为undefined

ajax封装

周日在家封装了ajax简单的函数。

1、封装extand方法

  模仿(抄袭)jQuery源码的$.extend方法,可以在使用ajax时候少传一些参数。

  

Function.prototype.method = function(name, func) {
    this.prototype[name] = func;
    return this;
};

var $ = function() {
    
}
.method(‘extend‘, function() {
    var options, name, copy,
        target = {},
        i = 1,
        length = arguments.length;

    for ( ; i < length; i++ ) {
        options = arguments[i];
        for ( name in options ) {
            copy = options[name];
            target[name] = copy;
        };
    }
    return target;
})

2、有了extend方法之后,就是ajax方法了

 

.........
 .method(‘ajax‘, function(opts) {
    var xhr = new XMLHttpRequest(),
    self = this,
    ajaxSettings = {
        url: location.href,
        type: "GET",
        async: true,
        contentType: "application/x-www-form-urlencoded",
        data: null
    },
    ajaxOpts = this.extend({}, ajaxSettings, opts),
    success = ajaxOpts.success;
    xhr.onreadystatechange = function() {
        if(xhr.readyState === 4 && xhr.status === 200) {
            var res = JSON.parse(xhr.responseText);
            if(res.success) {
                data = res.data || {};
                success && success.call(self, data);
            }
        }
    };
    xhr.open(ajaxOpts.type, ajaxOpts.url, !!ajaxOpts.async);
    xhr.setRequestHeader("Content-type", ajaxOpts.contentType);
    xhr.send(JSON.stringify(ajaxOpts.data));
    return this;
})

这样的话,ajax方法就已经封装好了。

 

但是有一些问题,现在angular,jQuery 都支持$ajax().success 或者 $ajax().done的连缀写法,我至今还没想好怎么实现,难道是用ES6的promise函数吗??>

以上是关于JS参数可以少传吗?的主要内容,如果未能解决你的问题,请参考以下文章

JSDoc 快速上手

[C++潜心修炼] 小试牛刀

谷歌浏览器下载软件可以断点续传吗?

.net webservice方法参数问题

一般RESTful 的 API 接口,应该返回啥参数

调用支付jsapi 缺少参数appid