我有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
的类型为object(var str = new String('abc')
),则Object.prototype.isPrototypeOf(str)
的结果为true
。但是上面代码的结果是false
。当str
用作isPrototypeOf
方法的参数时,为什么不自动将其从字符串转换为对象?谢谢!
最佳答案
另一个回答具体问题。