我做了什么
我在对象的值中调用一个函数。
并且这个函数会在每个对象中被调用,就像用户添加一个absent
数据一样。
我想做的事
因此,我认识到我可以拥有数千个新对象,我宁愿减少/消除重复,也不愿每次都编写函数。
解释代码的用途
我想自动设置的函数名称是datesBetween()
.
datesBetween()
可以选择模式,有参数。
模式引用来自reason
同一对象中的键的值。arr[0].absent[0].datesBetween
的值应该是datesBetween('leave')('2020-1-1','2020-1-4')
。
参数也一样。第一个参数应该来自start
同一对象中的对象键,第二个参数应该来自对象键end
。
一些想法
- 我想这可以使用
class
,但我害怕与功能混淆。如果课程有帮助,请告诉。 - 我给
this
你写信,我不确定this
。在这段代码中使用this
可能是一个解决方案吗?var arr = [ { name : "A", absent :[ { reason : "leave", start : '2020-1-1', end : '2020-1-4', datesBetween : datesBetween('leave')(this.start, this.end) }, { reason : "sleeOver", start : '2020-1-25', end : '2020-1-26', datesBetween : datesBetween('sleeOver')(this.start, this.end) } ] }, { name : "B", absent :[ { reason : "weekendExcursion", start : '2020-1-18', end : '2020-1-19', datesBetween : datesBetween('weekendExcursion')(this.start, this.end) } ] } ] function autoAbsentSetter(){ //do I need class to use inheritance/property things? } function addAbsent(mode){ var funcs = { 'leave' : function absent_leave(name, absentName, absentStart, absentEnd){ //all kinds of leave are included. Detail further. //some codes }, 'sleepOver' : function absent_sleepOver(name, absentName, absentStart, absentEnd){ //some codes }, 'weekdayExcursion' : function absent_weekdayExcursion(name, absentName, absentStart, absentEnd){ //some codes }, 'weekendExcursion' : function absent_weekendExcursion(name, absentName, absentStart, absentEnd){ //some codes } } return funcs[mode]; }