根幹部分
うーむ。いまだ、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
|