function中的this在沒有調用的時候只是一個符號,不代表任何對象。只有當調用的時候才會產生一個內部對象,然后將內部對象的引用指針傳遞給對象實力。
如對象創建的方法:

function ClassA()
{
this.b='test';
return this; //this在沒有用行時只是一個符號;在調用時this才會檢查這個調用的引用。
}
var a = ClassA(); //window.ClassA(); 此時只是把內部對象的指針傳遞a。相當已window調用ClassA(),故此時this為window,
alert(a==window) //true
var b=new ClassA(); //通過new newclass()執行,由于new的內部機制,會先創建一個對象,指向this,再將該對象的引用返回
alert(b==ClassA) //true
classA.prototype.c = 'd';
alert(a.c); //undefined,a為window對象,內部沒有c變量
alert(b.c); //d
在prototype中,多次用到了下面這種寫法:
如:

var Class =
{

create: function()
{

return function()
{
this.initialize.apply(this, arguments);
}
}
}

這里是返回一個函數對象,此時函數對象沒有調用著。當創建一個對象后
var class=Class.create(); 此時得class只不過是一個函數對。
當用到
var obj=new class時,this才有了引用,指向當前得對象實例。
再看下面得例子:

Function.prototype.bind = function()
{
var __method = this, // 這里的this表示bind方法的調用者, 是一個函數對象
args = $A(arguments), object = args.shift();

return function()
{
return __method.apply(object, args.concat($A(arguments)));
}
}

