function中的this在沒有調(diào)用的時(shí)候只是一個(gè)符號(hào),不代表任何對(duì)象。只有當(dāng)調(diào)用的時(shí)候才會(huì)產(chǎn)生一個(gè)內(nèi)部對(duì)象,然后將內(nèi)部對(duì)象的引用指針傳遞給對(duì)象實(shí)力。
如對(duì)象創(chuàng)建的方法:

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

var Class =
{

create: function()
{

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

這里是返回一個(gè)函數(shù)對(duì)象,此時(shí)函數(shù)對(duì)象沒有調(diào)用著。當(dāng)創(chuàng)建一個(gè)對(duì)象后
var class=Class.create(); 此時(shí)得class只不過是一個(gè)函數(shù)對(duì)。
當(dāng)用到
var obj=new class時(shí),this才有了引用,指向當(dāng)前得對(duì)象實(shí)例。
再看下面得例子:

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

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

