javascriptのprototype

prototypeは、参照する分にはあくまでもスタティックなフィールドを見るのだけれど、いったん更新してしまうと__proto__フィールドを隠蔽してしまうらしい。

var A = function(){};
A.prototype={a:1, incf:function(){ print(this.a++); }};
var a = new A;
a.a // 1
a.incf() // 1
a.incf() // 2
var b = new A;
b.incf() // 1
b.incf() // 2
a.__proto__.a // 1

なんかトリッキー。
スタティックな状態を持つためにはレキシカル変数を使わなきゃだめみたい。