日期:2014-05-16 浏览次数:20417 次
原文: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
,然后调用?