为什么使用 Object('123') 创建对象会创建一个 String() 对象,但 typeof 是“对象”
why does creating an object using Object('123') create a String() object but typeof is 'object'?
这样做:
var x = Object('abc');
现在只需在控制台中键入 x
并单击 Enter 即可。它将输出:
String {0: "2", 1: "3", 2: "2", 3: "3",....}
现在键入 typeof x
,你会得到object
。
这是怎么回事?
Object 构造函数返回对象的实例,该对象的类型适用于传入的值。在您的情况下,您传入一个字符串基元值,因此您返回一个 String 对象。(请注意,在 JavaScript 字符串基元值和字符串实例中是两种不同类型的值。这可能很难说,因为 JavaScript 会在情况需要时自动将字符串原语包装在字符串包装器中。
typeof
运算符返回字符串实例的"对象"。
var x = "";
是一个基元类型的字符串。
var x = Object('abc');
是一个对象字符串。
检查 类型 部分了解更多信息:http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf
相关文章:
- Protractor:element.getText()返回一个对象,而不是String
- 为什么使用 Object('123') 创建对象会创建一个 String() 对象,但 typeof 是“对象”
- 对象引用未设置为行中的对象的实例,如果 (!string.IsNullOrEmpty(tdcd.文本)&&
- 如何对 String 对象进行切片,直到它达到“/”标记
- 字符串是对象 String() 的实例吗?
- 使用 Javascript 或 jQuery 将 Array-String 转换为对象
- JavaScript:如何访问 String 对象的字符串值
- 为什么 String.prototype 中的“this”指的是对象类型,而不是字符串类型
- JavaScript 对象初始化 {key:val, string}.
- 如何使用 String.replace() 方法而不弄乱 MS Word 2013 中的空白段落和对象标识符
- "[对象对象]”;类型为String
- 来自String的Javascript新Date对象,IE和FF上的不同结果
- 如何将String转换为对象类型
- 传递手动创建的RegExp对象时,String.match返回不正确
- 为什么String.prototype会记录它's对象类似于标准对象,而Array.prototype记录它
- 在Javascript中将XMLDocument对象转换为String
- string.search()抛出一个javascript错误'对象不'不支持属性或方法搜索'
- 在javascript中使用String作为对象
- 在Javascript中是一个String对象
- 使用string key访问或创建嵌套JavaScript对象,不需要eval