日期:2014-05-16  浏览次数:20417 次

JavaScript:将所有值都转换成对象

原文:JavaScript: converting any value to an object

译文:JavaScript:将所有值都转换成对象

译者:justjavac


这是一篇关于?原始值(primitive values)和包装对象(wrapper objects)之间的转换?的文章。 值得庆幸的是,在 JavaScript 中,我们一般不需要这么做。 除非我们需要为原始值添加一些属性,但是原始值是不可改变的,因此需要把它转换为一个?包装对象

让我们从一个小测验开始:

({}).valueOf.call(myvar)

这段代码的作用是什么?

简单的回答:它把值类型转换成对象类型(对象保持不变,原始值转换为一个包装类型的实例)。

详细的解释需要翻阅?ECMAScript 5 规范(ECMA-262,第5版)。

({}).valueOf?使用?Object?的一个实例来访问?Object.prototype.valueOf

(译注:{}?字面量是?Object?的一个实例,如果直接写 '{}.valueOf' 则会出现解析错误,因为 javascript 引擎将{}?解析成一个代码块。@justjavac)

call()?方法将?this?设置为?myvar,然后调用?