extend带参default值的问题
2017-09-26 16:26
302 查看
最为普通的为下面这种
$.fn.myPlugin = function(options) { var defaults = { 'color': 'red', 'fontSize': '12px' }; var settings = $.extend(defaults, options);//默认参数与用户设置的参数进行合并 return this.css({ 'color': settings.color, 'fontSize': settings.fontSize }); }
但是暴露了一个问题 =》如何保护好默认参数:
注意到上面代码调用extend时会将defaults的值改变,这样不好,因为它作为插件因有的一些东西应该维持原样,另外就是如果你在后续
代码中还要使用这些默认值的话,当你再次访问它时它已经被用户传进来的参数更改了。
一个好的做法是将一个新的空对象做为$.extend的第一个参数,defaults和用户传递的参数对象紧随其后,这样做的好处是所有值被合
并到这个空对象上,保护了插件里面的默认值。
$.fn.myPlugin = function(options) { var defaults = { 'color': 'red', 'fontSize': '12px' }; var settings = $.extend({},defaults, options);//将一个空对象做为第一个参数,后面的参数,全部合在一个对象里面。 return this.css({ 'color': settings.color, 'fontSize': settings.fontSize }); }
相关文章推荐
- struts.xml中的default-action-ref问题
- Eclipse导入Android工程,出现default与Displaying的问题解决
- 解决:IIS APPPOOL\DefaultAppPool 登录失败的问题
- 搭建hadoop2.6.0集群遇到fs.defaultFS的问题
- mvc:default-servlet-handler的安全问题
- linq中last或者lastordefault不存在的问题
- php时区时间错误问题 date 当前时间 时差 当地 本地date_default_timezone_set
- warning LNK4098: 默认库“MSVCRT”与其他库的使用冲突;使用 /NODEFAULTLIB:library问题解决方法
- iOS-default.png启动图片(上下多出黑色区域问题)
- mysql中单表多timestamp设置default问题
- Ubuntu 16.04没有/etc/default/rcS文件的UTC设置选项的问题解决
- 关于Android 7.0下Launcher3下default_workspace.xml修改无效的问题
- vss问题:客户端提示"Sourcesafe cannot find a default database.Would you like to select one?"
- xcode中 Default-568h@2x 图片问题
- 解决struts报错问题Unable to load configuration struts2-core-2.3.16.3.jar!/struts-default.xml:40:72
- 关于default-action-ref标签不能访问相应的class中的action问题的解决方案
- Ubuntu8.10中Eclipse SVN插件的unable to load default svn client问题
- 遇到ORA-01691: unable to extend lob segment问题
- 解决 debian8 中 /etc/default/docker 无效问题
- 解决vagrant default: Warning: Connection timeout. Retrying...的问题