2013-05-31 31 views
2

我想解決別人的代碼,我真的被困在他們如何設法做到這一點。代碼很長,所以我會嘗試給出一個我試圖找出的簡單例子。返回值並保留javascript對象的成員?

我有類似如下:

var obj = function(){ 
this.obj1 = "test1"; 
this.obj2 = "test2"; 
}; 

var inst = new obj; 
alert(inst); 

此輸出[對象]。我想知道怎麼做的,是讓這個回報率「測試1」,而不是價值 - 但也還是讓我打電話給該對象成員,這樣我也可以做

alert(inst.obj2); 

,並得到一個輸出:'test2'。

我想我能做到這一點是類似的方式:

var obj = function(){ 
    this.obj1 = "test1"; 
    this.obj2 = "test2"; 
    return this.obj1; 
}; 

var inst = new obj; 
alert(inst); 

但這也返回[對象]

這就是我試圖破譯代碼,似乎是在做。語法要複雜得多 - 它使用了我認爲的閉包和原型,但我仍然沒有理解這些,所以不太明白髮生了什麼。

非常感謝!

+0

這可能會幫助你https://developer.mozilla.org/en-US/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript?redirectlocale=en-US&redirectslug=JavaScript%2FIntroduction_to_Object-Oriented_JavaScript –

回答

5

要使alert顯示[object Object]以外的其他值,請在對象上定義.toString()方法。

function MyObj() { 
    this.obj1 = "test1"; 
    this.obj2 = "test2"; 
}; 

MyObj.prototype.toString = function() { 
    return this.obj1; 
}; 

var inst = new MyObj(); 
alert(inst); // will show "test1" 
+0

的偉大工程。謝謝! –