2012-09-27 81 views
0

方案Javascript對象編程和對象表示

我與一些JavaScript對象編程玩弄,當我寫下了下面的代碼(演示here):

var o = { 
     "key":1, 
     "value": 1234, 
     toString: function(){ 
      var res = this.key + ";" + this.value; 
      return res; 
     } 
    }; 

    var p = { 
     "key":2, 
     "value": 5678 
    }; 

    document.write(o); 
    document.write("</br>"); 
    document.write(p); 

正如你所看到的,有一個toString()方法讓o object在不調用toString()方法的情況下被顯示,而p object被顯示爲...那麼?

質詢

  1. 是對對象的代表性toString字面一種默認的名字?還有什麼?

  2. [object Object]表示法的含義是什麼?

+0

非常感謝大家。你給了我參考和好點。我很早以前就開始使用Javascript,在着名的框架讓大家知道這種腳本語言的力量之前。現在我對ECMA-262的oop功能着迷:舊的好Javascript。 –

回答

2

toString文字是對象表示的一種默認名稱嗎?還有什麼?

它是您的對象的toString屬性上的函數。

在Javascript中,當(在一個字符串串聯使用時,或者在alert()document.write()EcmaScript §9.8: ToString,例如)它的toString方法被調用(經由ToPrimitiveDefaultValue - §8.12.8)的對象被澆鑄爲字符串。

通常,您指定在自定義對象的原型上,並且所有內置類型都有一個(例如Array.prototype.toString,它們用逗號連接值)。你已經明確地將它設置在你的對象文字中。

[object Object]符號是什麼意思?

這是默認的toString實現對象的結果,即。對於Object的所有實例。 EcmaScript §15.2.4.2指定Object.prototype.toString返回[object + + ],並且普通對象的內部[[class]]是「Object」。

+0

+1爲參考。 –

0
  1. 當對象被髮送到寫,內部寫調用對象的toString方法可能(如在O)或可能不(像p)被覆蓋。

  2. 在toString的默認實現中,第一個object定義它是一個對象(與數組或基元相反),第二個Object定義它是Object類型的對象。一些沒有有意義的字符串表示的內置對象類型(例如像DOM節點),返回它們的類型名稱而不是Object。如果您希望自己的對象在傳遞到寫入時輸出其類型名稱,則必須覆蓋toString。

-1

「[對象的對象]」是通過每一個對象從Object下降,其繼承的默認toString方法返回。

0

在JavaScript中的每個對象都有一個toString()方法,當物體在字符串上下文中使用,如用document.write(o)而且當你寫o + ' another string'它被隱式調用。

該方法默認返回'[object Object]',這不是很有用,但可以覆蓋返回任何你喜歡的東西;像NumericStringDate這樣的對象可以做到這一點。