2010-06-01 53 views
3
function F() { 
    function C() { 
     return this; 
    } 
    return C(); 
} 
var o = new F(); 

回答

7

分解組件元素。

假設你要做到這一點:

function C() { 
    return this; 
} 
var o = C(); 

顯然有沒有對象上下文在這裏,所以thiswindow

在構造函數中包裝該設置不會改變在直接調用C()的上下文中沒有涉及任何對象的事實。

0

C()不是f對象的方法。如在,你不能撥打o.C();。如果這是有道理的。並且因爲您返回C()的返回值而不是C的新實例,它將返回窗口對象。

0

function F(){return this; }也會返回窗口。所以將var obj = this。只要「這個」沒有其他價值,就不是「這個」的價值。

2

函數C()不是f的方法,你需要做的是這樣的:

function F() { 
    this.C = function() { 
     return this; 
    } 
    return this.C(); 
} 
var o = new F(); 

雖然這是一個有點令人費解,當你可能只是這樣做,以實現同樣的事情:

function F() {} 
var o = new F(); 
相關問題