我有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方法的参数时,为什么不自动将其从字符串转换为对象?

谢谢!

最佳答案

  • 看看"TypeError mdc"的第一个匹配项。引发类型错误时,取决于规范和用户。

  • 另一个回答具体问题。

    10-05 20:35
    查看更多