< QmlWeb‎ | Qml.js

Difference between revisions of "QmlWeb/Qml.js/Design Questions and Decisions"

Line 26: Line 26:
 
As we're using setters and getters in either way, we need to store the actual property value separated. There're multiple possibilities for that:
 
As we're using setters and getters in either way, we need to store the actual property value separated. There're multiple possibilities for that:
 
; Private member using closures
 
; Private member using closures
; Private member using like _width
+
; Private member using like ''_width''
 
; Using property objects and direct object references
 
; Using property objects and direct object references
 
; Using property indexes and a properties array
 
; Using property indexes and a properties array
 +
* If done right, it might provide weak references
 
; Using a properties object and access it per name
 
; Using a properties object and access it per name
 +
* Bad bad bad performance

Revision as of 08:44, 4 March 2015

This page intends to collect questions about software architecute and software design, pros and cons as well as the decisions made on the topic.

Runtime Architecture

Getter/Setter Technique

Possibilities:

C++ style getters and setters
this.width(); and this.setWidth(width);
  • C++ style
  • fast in all browsers
Transparent getter/setter using Object.defineProperty
Object.defineProperty(this, "width", { get function(){}, set: function(){} });
  • nice while debugging
  • worse performance in IE
  • horrible performance in Firefox
Transparent getter/setter using literal notation
  • nice while debugging
  • worse performance in IE
  • you can't use object literals and inheritance at the same time in a standard compliant manner


Benchmark: http://jsperf.com/getter-setter/7

Decision: Use C++ style getters and setters

Storing properties

As we're using setters and getters in either way, we need to store the actual property value separated. There're multiple possibilities for that:

Private member using closures
Private member using like _width
Using property objects and direct object references
Using property indexes and a properties array
  • If done right, it might provide weak references
Using a properties object and access it per name
  • Bad bad bad performance

This page was last edited on 4 March 2015, at 08:44. Content is available under Creative Commons License SA 4.0 unless otherwise noted.