請教,直接調用Object.toString()(結果:輸出Object源碼)和Object.prototype.toString()(結果:輸出[object Object]),對于這兩種用法,以及調用的結果怎么理解?
Object.toString() 應該是可以理解為靜態方法,類直接調用,Javascript默認返回定義函數(或者稱類)時的源碼;那么Object.prototype.toString()呢?
Object.toString() 應該是可以理解為靜態方法,類直接調用,Javascript默認返回定義函數(或者稱類)時的源碼;那么Object.prototype.toString()呢?
2015-03-17
舉報
2015-03-18
需要搞清楚,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
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類型數據時的唯一默認構造器。