亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

請教,直接調用Object.toString()(結果:輸出Object源碼)和Object.prototype.toString()(結果:輸出[object Object]),對于這兩種用法,以及調用的結果怎么理解?

Object.toString() 應該是可以理解為靜態方法,類直接調用,Javascript默認返回定義函數(或者稱類)時的源碼;那么Object.prototype.toString()呢?

正在回答

2 回答

需要搞清楚,Object.toString的toString方法,并不是Object對象上的。


Object.hasOwnProperty('toString'); // false


Object.toString方法繼承自原型,Object是函數構造器,它的原型其實就是Function.prototype.


Object.getPrototypeOf(Object) === Function.prototype; // true


而Object.toString實際調用的,就是Function.prototype.toString;


Function.prototype.hasOwnProperty('toString'); // true

0 回復 有任何疑惑可以回復我~
#1

tjian 提問者

謝謝@Bosn老師的回答! 關于這個問題,我又驗證了好多遍,應該理解了:Object.toString()和Object.prototype.toString()調用的應該是同一段代碼,結果不同主要在于Object是function類型的對象,而Object.prototype是object類型的對象。
2015-03-19 回復 有任何疑惑可以回復我~
#2

tjian 提問者

非常感謝!
2015-03-19 回復 有任何疑惑可以回復我~

在理解的過程中,還得到下面一些結論,麻煩@Bosn老師幫忙看看:

1.Object和Function本質上都是function,它們擁有共同的構造器(constructor),并且各自的原型鏈上有一個共同的原型(但是這并不是說它們的原型相同)。

2.prototype是"function"類型數據上才具有的屬性,繼承自Function.prototype(所有function類型的默認原型)。

3.prototype上存放對原型的引用(原型是object類型),constructor上存放對構造對象的函數的引用(即存放的是function類型)。

4.Object是創建object數據時的默認構造器,Function是創建function類型數據時的唯一默認構造器。

1 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

請教,直接調用Object.toString()(結果:輸出Object源碼)和Object.prototype.toString()(結果:輸出[object Object]),對于這兩種用法,以及調用的結果怎么理解?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號