javascript - js函数传参写法?

 mobiledu2502869077 发布于 2022-11-09 10:41
CountDown=function(params){
     this.params=params||{};
     var obj=params.obj;
     var deText=params.deText;
     var delay=params.delay||60;
}
CountDown=function(params){
     params=params||{};
     var obj=params.obj;
     var deText=params.deText;
     var delay=params.delay||60;
}
CountDown=function(obj,deText,delay){
     this.obj=obj;
     this.deText=deText;
     this.delay=delay||60;
}

当要传入的参数较多时,应该怎么来写及分类,里面的this有什么作用?我想知道用原生js写函数,当参数较多时(几十个),该怎么来设置他的默认值全部都写成this.delay=delay||60这种形式太麻烦了吧,有其他办法吗??
我知道jq可以这样:

function example(setting){ 
  var defaultSetting={ 
    name:'小红', 
    age:'30', 
    sex:'女', 
    phone:'100866', 
    QQ:'100866', 
    birthday:'1949.10.01'
  }; 
  $.extend(defaultSetting,settings); 
  var message='姓名:'+defaultSetting.name 
  +',性别:'+defaultSetting.sex 
  +',年龄:'+defaultSetting.age 
  +',电话:'+defaultSetting.phone 
  +',QQ:'+defaultSetting.QQ 
  +',生日:'+defaultSetting.birthday 
  +'。'; 
  alert(message); 
} 

example({ 
  name:'小红', 
  sex:'女', 
  phone:'100866' 
}); 
//输出:姓名:小红,性别:女,年龄:30,电话:100866,QQ:100866。

如果用原生的话该怎么写?

3 个回答
  • es6有Object.assign。
    你用原生es5,封装一个跟$.extend一样的方法就行了。
    jquery也是js写的,封装方法只是为了方便而已,你用原生,照他的封装就行了。

    2022-11-12 01:42 回答
  • 原生的在ES6已经可以

        function [name]([param1[ = defaultValue1 ][, ..., paramN[ = defaultValueN ]]]) {
           statements
        }

    传送门:
    https://developer.mozilla.org...
    http://babeljs.cn/docs/learn-...
    这样了!当然兼容性略差了,不过用上babel都不是问题- -...

    感觉for in对传入对象进行遍历也是可以的,不过没实践过,毕竟几十个参数的情况还没遇到过

      for(var i in params){
        console.log(params[i]);
      }

    主要还没看JQuery源码,不然从里面已经会找到不错的思路吧

    2022-11-12 01:42 回答
  • $.extend({},params.default,PARAMS)

    传入一个对象,覆盖默认值,jQuery方法extend

    2022-11-12 01:42 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有