В чем отличия Object.prototype.method и Object.method?

Вот увидел такой кусочек кода

Object.prototype.toString.call({});

для получения класса объекта. И не могу понять: зачем нам prototype? Ведь по сути нам просто нужно получить функцию и задать контекст, почему же тогда работает только с prototype? И еще, почему на MDN Mozilla (и на других ресурсах) также некоторые методы и свойства описываются с prototype, а некоторые без него? Только потому что одни могут наследоваться, а другие нет? Сразу скажу, что я читал о прототипах и понимал все до примера выше.
  • Вопрос задан
  • 333 просмотра
Решения вопроса 1
delphinpro
@delphinpro Куратор тега JavaScript
frontend developer
В чем отличия Object.prototype.method и Object.method?

Object.method — это методы конструктора Object. Ну вроде как статические методы в php, если провести аналогию.
Object.prototype.method — это методы экземпляров Object и его потомков.

И не могу понять: зачем нам prototype? Ведь по сути нам просто нужно получить функцию и задать контекст, почему же тогда работает только с prototype?

Потому что данная функция определена именно в прототипе.

Тут всё довольно просто, без заморочек.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
SecretBrain
@SecretBrain
still trainee
Да собственно никак на различаются:
alert( {}.toString == Object.prototype.toString ); // true, да
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы