У меня 3 вопроса. Спасибо!
Первый вопрос:
Когда коды JavaScript вызовут исключение «TypeError»?
Другие вопросы:
У меня есть коды ниже:
<!DOCTYPE html>
<meta charset="utf-8">
<title>An HTML5 document</title>
<script>
var str = 'abc'; // str's type is string, not object
// Syntax: Object.getPrototypeOf(object)
alert(Object.getPrototypeOf(str)); // Uncaught TypeError: Object.getPrototypeOf called on non-object
// Syntax: prototype.isPrototypeOf(object)
if (Object.prototype.isPrototypeOf(str)) { // false
alert('true');
} else {
alert('false');
}
</script>
Метод getPrototypeOf()
и isPrototypeOf()
оба нуждаются в параметре, тип которого должен быть объектом. И тип str
является строкой.
Почему метод getPrototypeOf
вызывает исключение TypeError, а метод isPrototypeOf
не выдает никаких ошибок?
Если тип str
является объектом (var str = new String('abc')
), результат Object.prototype.isPrototypeOf(str)
будет true
. Но результат кодов выше false
. Почему str
не преобразуется из строки в объект автоматически, если он используется в качестве параметра isPrototypeOf
метода?
Спасибо!