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。
如果用原生的话该怎么写?
es6有Object.assign。
你用原生es5,封装一个跟$.extend一样的方法就行了。
jquery也是js写的,封装方法只是为了方便而已,你用原生,照他的封装就行了。
原生的在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源码,不然从里面已经会找到不错的思路吧
$.extend({},params.default,PARAMS)
传入一个对象,覆盖默认值,jQuery方法extend