Also richtig ist nach dem ECMAScript-Standard definitiv node.value = "foo". Ich vermute, dass die expliziten Getter/Setter verwendet werden, weil die API der zugrunde liegenden JavaScript-Engine keine impliziten unterstützt. In SpiderMonkey beispielsweise ist es möglich Getter und Setter sowohl für Klassen, als auch für Attribute zu definieren, die implizit bei einem Ausdruck der Form node.value = "foo", bzw. var bla = node.value ausgeführt werden. Ich kann mir vorstellen, dass andere Implementierungen sowas nicht unterstützen, so dass man explizite Akzessoren braucht. Das ist auch schon das Problem bei JavaScript: Es gibt viele Implementierungen, die zwar skriptseitig standardkonform sind, was die Einbettung angeht aber unterschiedlich umfangreiche APIs anbieten. Würden die Browser sich auf eine JavaScript-Engine einigen, würde es viel einheitlicher aussehen.