I’m working on a file manager framework similar to elFinder. My current code works fine but now I want to make it look better and add chaining (I’m not sure if it’s chaining or decorator pattern).
Here is a sample of what I want to do:
function UI() {}
UI.prototype.folders = function(){
return [];
}
UI.prototype.folders.prototype.getSelectedFolder = function(){
return {};
}
Calling UI.folders() should return an array of folder objects. So if you call UI.folders() you would get something similar to this:
[
Object { name="folder1", selected=false },
Object { name="folder2", selected=false },
Object { name="folder3", selected=true }
]
And calling UI.folders().getSelectedFolder() would filter the results from UI.folders() and will return:
Object { name="folder3", selected=true }
Is this possible? Is it right to say “chaining” in this case or it’s “decorative pattern”?
If it’s not – is there another more appropriate way to do it?
Any help wold be really appreciated!
The are a few different ways to solve this. The primary goal is that when you call a function you get an object/function back that is the same type of object with different properties. I’m not a fan of the prototype usage so I would do it like this (this is one way to solve it):