2012-07-05 46 views
2

如果我有:添加新的功能,對象

function myFunc(a) 
    { 
    if(! (this instanceof myFunc)) return new myFunc(a); 
    this.myVar = "FOOBAR"; 
    } 

如何使這個工作? :

myFunc(function() { alert(this.myVar)}); // output must be "FOOBAR"; 

回答

3

呼叫athis

function myFunc(a) 
    { 
    if(! (this instanceof myFunc)) return new myFunc(a); 
    this.var = "FOOBAR"; 

    a.call(this); // <-- Added this line 
    } 

    myFunc(function() { alert(this.var)}); // output must be "FOOBAR"; 

DEMO:http://jsbin.com/uferif/

+0

謝謝,再新的東西:),順便說一句是它可以列出對象的方法? – John 2012-07-05 13:42:58

+0

哦..它是:for(var // method // in // object //):D。再次感謝您的回答 – John 2012-07-05 13:50:32

+0

@John - 請注意,這種方式可以將每個項目循環扔到對象中。字符串,數字,函數等... – andlrc 2012-07-05 13:52:57