Не могу понять, зачем в данной функции использовать Object.prototype
для того, чтобы проверить input
и определить String
ли это?
В чем разница использования Object.prototype.toString.call(input)
и использования toString.call(input)
?
var isString = function (input) {
// Почему здесь используют Object.prototype,
// когда можно просто использовать метод toString.call(input) ?
if (Object.prototype.toString.call(input) === '[object String]') {
return true;
} else {
return false;
}
}
console.log(isString('w3resource'));
console.log(isString([0, 1, 2, 4]));
console.log(isString({name: "Nureke", age: 24}));
Обычно, потомки переопределяют toString
от объекта.
Это, в сущности, разные методы.
Например, Array.prototype.toString
собирает элементы массива через запятую.
А Object.prototype.toString
с помощью внутренних колдунств, определяет тип и выводит его в определённом формате.
Т. е. если нужно определить тип - берём метод прототипа объекта и, обязательно, устанавливаем this
, без него объект не будет ожидаемо работать.
toString.call(input) === Object.prototype.toString
, так что вызовы обычно эквивалентны (спасибо @Grundy за правку).
Однако, если кто-то сделает var toString = 42;
в глобальной области, но будет плохо.
P. S. Зачем if
? Сравнение уже возвращает булево значение.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
На сайте есть слайдер, который отображает видео, приходящее из сторонник сервисов (YouTube, vimeo), загружаемое в iframeМне нужно прокрутить слайдер...
Написал небольшую библиотеку и теперь пытаюсь перевести её на ES6 но и сделать версию для обычного использования, чтобы просто подключить...
Всем привет! Вообщем не могу понять как сделать так чтобы когда наводишь мышку на субтитры в видео, то они передаются в переменнуюИспользую...