根幹部分

うーむ。いまだ、Javascriptの真似が出来ません。
やりたいことは、Function,Object,prototype,__proto__あたりがあって、
ネイティブな関数とJavaScript上の関数が動き、また、コンストラクタとしてnew Functionが動き、
ユーザー定義のnew A()といったオブジェクトが動くようにしたいということなのですが。

js> A = function(){}
sun.org.mozilla.javascript.internal.InterpretedFunction@1eec612
js> Function
sun.org.mozilla.javascript.internal.IdFunctionObject@1f20eeb
js> Object
sun.org.mozilla.javascript.internal.IdFunctionObject@b179c3

FunctionやObjectはネイティブな関数オブジェクトでAはJavascript上の関数です。

js> a = new A()
[object Object]
js> o = new Object()
[object Object]
js> f = new Function()
sun.org.mozilla.javascript.internal.InterpretedFunction@19bd03e

それぞれnewすると、オブジェクトや関数が出来ます。
これは、newを呼び出した場合には、thisに値をいれて、thisがかえります。
また、prototypeが__proto__として参照されます。

js> a = new A()
[object Object]
js> a.__proto__ === A.prototype
true

これは基本的な話です。

js> a = new A()
[object Object]
js> o = new Object()
[object Object]
js> f = new Function()
sun.org.mozilla.javascript.internal.InterpretedFunction@19bd03e

js> Function.prototype
sun.org.mozilla.javascript.internal.BaseFunction@1891d8f
js> Object.prototype
[object Object]


js> Object.prototype === Function.__proto__.__proto__
true
js> Function.prototype === Object.__proto__
true

js> A.__proto__ === Function.prototype
true
js> A.__proto__.__proto__===Object.prototype
true
|