2010-06-14 48 views
3

在JavaScript中,您可以调用函数作为函数或构造函数。例如,你可以这样做:与原始值相反,数值/布尔值/字符串对象的用途是什么?

myObject = new Number(13); 
myPrimitiveValue = Number(13); 

或者干脆

myPrimitiveValue = 13; 

我理解的结果之间的差异。你能解释一下在哪个合理的情况下创建一个数字,布尔值或字符串作为对象是可取的?例如,设置新属性的能力(这是你可以在对象上做的事情,但对原始值无法做到)对于包含数字/布尔/字符串的对象几乎总是一个坏主意。为什么我需要一个数字/布尔/字符串对象?

回答

1

您很少必须为基本数据类型创建对象。

Number object的Microsoft文档:

“Number对象是 数值数据的包装器 的主要目的Number对象是以收集其 属性到一个对象,并 。允许通过toString方法将数字转换为 字符串 Number对象与 Number数据类型相似,但它们具有不同的属性和方法

您很少需要明确构建一个数字 对象。号码数据 类型应该在大多数 的情况下使用。由于Number对象 与数字数据 类型进行互操作,所有的Nu​​mber对象的方法和 属性可用于Number类型的变量 。”

+0

感谢你为这个,它有一定道理。但是这是一个有点有点奇怪,你不觉得吗?考虑其他脚本语言,例如lua,在那里没有这样的东西,表格(jscript对象的模拟)是一个表和数字/字符串/布尔是数字/字符串布尔。对比很不同的语言是不公平的,但是javascript对此很陌生。阅读ECMAScript规范我有一个明显的感觉,它是事后编写的,描述了一些已经存在的实现。 – 2010-06-14 09:28:44

+0

@zes pri:也许这些包装器受到了Java中类似的包装的启发,但它们在脚本语言中并没有那么有用。您说得对,该规范是基于现有的实现,JavaScript于1995年12月宣布,并且规范于1997年6月通过。http://en.wikipedia.org/wiki/ECMAScript – Guffa 2010-06-14 10:05:59