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 进行对象化。