Jump to content

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

From KDE Community Wiki
No edit summary
No edit summary
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