In the development of JavaScript frameworks, object-oriented programming and functional programming have their own advantages, and vary with different situations.
Apart from setting some type constants in the Singleton factory, closures are usually used to simulate private variables and methods of classes.
Combined with the prototype mechanism of JS, a JS function with object-oriented characteristics can be instantiated in the form of reducing memory usage.
Each time a new tree instance is created, the memory will open up physical space for its private variables, private methods, and all methods that can access private variables and private methods, there is always only one method in prototype. Therefore, we can put methods that do not need to save their own state information into the prototype of the JS function object to save the browser's memory overhead.