Object(obj)
在 underscore 对象 API 中,很多函数内部都可以见到下面的一段代码:
var obj = Object(obj);
这段代码的意义是:
- 如果
obj
是一个对象,那么Object(obj)
返回obj
- 如果
obj
是undefined
或null
,那么Object(obj)
返回一个{}
- 如果
obj
是一个原始值 (Primitive value),那么Object(obj)
返回一个被包裹的原始值:
var obj = 2;
obj = Object(obj); // 相当于 new Number(obj);
// => obj: Number {[[PrimitiveValue]]: 2}
var value = obj.valueOf();
// => value: 2
一言以蔽之,Object(obj)
就是将传入的 obj
进行对象化。