函数定义参数个数和调用个数以及顺序问题
来源:4-9 Storage封装

慕仔4607872
2021-02-20
老师,我有两个问题
①这个定义传三个形参,实际调用时传两个参数。这个前端语法学名是什么,如何规避不报错的。我想查资料了解下不知道怎么查。② 这种递归调用传的参数和定义的参数顺序是一致还是什么?module_name传给module_name?还是module_name对应key?这个递归是语法么?可能我这种传参没看懂,这种递归更让我晕头转向了,求解答
1回答
-
你应该先跳出这个语法,先知道我们为什么封装storage,它主要的目地是什么,理解了以后,再来看这个方法就没问题了。
1、storage只是对浏览器localStorage的封装,原生的API使用也是localStorage.setItem和localStorage.getItem,分别是设置和保存,我们增加第三个参数的意思是,区分模块,如果没有模块划分,那你会把所有字段都存到storage里面,当多个项目公用的时候,显的极为混乱,我们关键是要按模块区分
storage.setItem("name","jack"),就会存入一个对象:{name:'jack'}
storage.setItem("age","30"),会继续存入一个对象:{age:30}
整个localStorage里面就会有两个对象:{name:'jack'},{age:30},当你的信息多的时候,就会平铺下去。
module_name解决的就是模块的问题
storage.setItem("name","jack","userInfo"),它的意思就是往userInfo下面存入一个对象:{userInfo:{name:'jack'}}
storage.setItem("age",30,"userInfo"),就是往userInfo下面继续存入一个对象:{userInfo:{name:'jack',age:30}}
这是不是就能看懂了。
第一个setItem里面的递归之所以是this.setItem(module_name,val)是两个参数,是因为我们上面不是加了if(module_name)的判断,只有传了第三个参数,我们才会获取这个模块,然后进行存储
012021-02-24
相似问题