javascript - js函数传参写法?
迷茫
迷茫 2017-04-11 12:51:22
[JavaScript讨论组]
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)
PHPz

$.extend({},params.default,PARAMS)

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

PHP中文网

原生的在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源码,不然从里面已经会找到不错的思路吧

大家讲道理

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号