封 装 对 象 扮 演 着 十 分 重 要 的 角 色。 由 于 基 本 类 型 值 没 有 .length 和 .toString() 这样的属性和方法,需要通过封装对象才能访问,此时 JavaScript 会自动为 基本类型值包装)一个封装对象:
var a = "abc";
a.length; // 3
a.toUpperCase(); // "ABC"
如果需要经常用到这些字符串属性和方法,比如在 for 循环中使用 i < a.length,那么从 一开始就创建一个封装对象也许更为方便,这样 JavaScript 引擎就不用每次都自动创建了。
但实际证明这并不是一个好办法,因为浏览器已经为 .length 这样的常见情况做了性能优 化,直接使用封装对象来“提前优化”代码反而会降低执行效率。
一般情况下,我们不需要直接使用封装对象。最好的办法是让 JavaScript 引擎自己决定什 么时候应该使用封装对象。换句话说,就是应该优先考虑使用 "abc" 和 42 这样的基本类型 值,而非 new String("abc") 和 new Number(42)。
使用封装对象时有些地方需要特别注意。
比如 Boolean:
我们为 false 创建了一个封装对象,然而该对象是真值,所以这里使用封装对象得到的结果和使用 false 截然相反。
如果想要自行封装基本类型值,可以使用 Object(..) 函数(不带 new 关键字):
再次强调,一般不推荐直接使用封装对象(如上例中的 b 和 c),但它们偶尔也会派上 用场。
留言与评论(共有 0 条评论) |