Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   немного глубже о .toString() (https://javascript.ru/forum/misc/25055-nemnogo-glubzhe-o-tostring.html)

graduate 24.01.2012 02:33

немного глубже о .toString()
 
Почему Object.toString !== Object.prototype.toString ??

Gvozd 24.01.2012 02:44

console.log(Object.toString === Object.prototype.toString);//false
console.log(Object.toString === Function.prototype.toString);//true
console.log(Object.toString === Function.toString);//true

Object - функция-конструктор объектов типа Object
Поэтому ее toString берется из ее прототипа, который общий для всех функций, а не из прототипа объектов.

DreamTheater 24.01.2012 02:44

Потому что Object это, скажем, "класс", а {} это его экземпляр, соответственно {} получает все свойства Object.prototype.

То бишь в Вашем примере валидно будет написать {}.toString === Object.prototype.toString

Kolyaj 24.01.2012 09:50

Цитата:

Сообщение от DreamTheater
Потому что Object это, скажем, "класс"

Скажите лучше "функция".

trikadin 24.01.2012 09:53

Цитата:

Сообщение от Kolyaj
Скажите лучше "функция".

Ну блин. Давайте уже придумаем, как называть функции-конструкторы.

Kolyaj 24.01.2012 09:54

Цитата:

Сообщение от trikadin
Давайте уже придумаем, как называть функции-конструкторы.

Конструкторы.

trikadin 24.01.2012 09:58

Kolyaj, не, не очень. Объект конструктора Array?

Kolyaj 24.01.2012 10:06

Связку конструктор-прототип вполне можно называть классом. В данной же теме акцент именно на том, что Object -- это функция. А что это ещё и конструктор тут неважно.

trikadin 24.01.2012 10:07

А, окей.

Просто я так и не понял, почему в "javascript нет классов!!!!111" и т.д.

Kolyaj 24.01.2012 10:15

Цитата:

Сообщение от trikadin
Просто я так и не понял, почему в "javascript нет классов!!!!111" и т.д.

Потому что под классами обычно понимают Java-style классы. А таких нет. Если собеседник понимает, что говоря класс, я имею в виду именно конструктор с прототипом, то я говорю класс, так короче.


Часовой пояс GMT +3, время: 18:07.