为什么结果会是false呢? 代码如下: [removed] var aColors = [“red”, “green”, “blue”]; alert(typeof aColors[0]); //output “string” alert(aColors[0] instanceof String); //output “false”; [removed] 你要区分string 与 String的区别 aColors[0] 是 string值类型, 当然不是String的实例啦。参考下面代码 var aColors = [“red”, “green 在JavaScript中,`typeof` 和 `instanceof` 都是用来检查变量类型的,但它们之间有着本质的区别。 `typeof` 是一个操作符,它返回一个表示变量类型的字符串。它主要用于基本数据类型的判断,例如: - number - boolean - string - function - object - undefined `typeof` 的局限性在于,当检测某些特殊的对象类型,如数组、null 或是自定义对象时,它会返回 "object",而不是实际的类型。例如: ```javascript var arr = []; typeof arr; // "object" ``` 而 `instanceof` 运算符则是用来判断一个对象是否是另一个构造函数的实例。它返回一个布尔值,如果对象是构造函数的实例,那么返回 `true`,否则返回 `false`。例如: ```javascript var str = new String("hello"); str instanceof String; // true ``` 在实例化对象时,`new String()` 会创建一个 String 类型的实例,而直接的字符串字面量 `"hello"` 是一个原始的字符串值,不是 String 对象的实例,所以: ```javascript var simpleStr = "hello"; typeof simpleStr; // "string" simpleStr instanceof String; // false ``` `instanceof` 还可以用于检查对象是否是其父类的实例。例如,所有数组都是 Object 的实例: ```javascript var array = []; array instanceof Array; // true array instanceof Object; // true ``` 但是,需要注意的是,`instanceof` 是针对 JavaScript 引擎内部的对象实例关系进行检测的,它并不适用于 DOM 对象,因为 DOM 对象是浏览器提供的,而不是 JavaScript 核心的一部分。比如,`window` 是全局对象,虽然它是一个对象,但 `window instanceof Object` 在某些情况下可能返回 `false`,因为这不是标准 JavaScript 对象。 在处理函数的 `arguments` 对象时,`arguments` 表现得像一个数组,但 `instanceof Array` 会返回 `false`,因为它实际上是一个类数组对象,不是一个真正的 Array 实例。 总结来说,`typeof` 用于判断基本数据类型,而 `instanceof` 用于确定一个对象是否是特定构造函数的实例。在实际开发中,根据不同的需求选择合适的方法进行类型检查,才能得到准确的结果。
- 粉丝: 7
- 资源: 930
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助