Object()函数

课后整理 2020-12-20

Object本身是一个函数,可以作为工具使用,将任意值转为对象。这个方法常用于保证某个值一定是对象。

【示例1】如果参数为空(或者为undefined和null),Object()返回一个空对象。

var obj = Object();
// 等同于 
var obj = Object(undefined);
var obj = Object(null);
obj instanceof Object // true

上面代码的含义,是将undefined和null转为对象,结果得到了一个空对象obj。

instanceof运算符用来验证,一个对象是否为指定的构造函数的实例。obj instanceof Object返回true,就表示obj对象是Object的实例。

【示例2】如果参数是原始类型的值,Object方法将其转为对应的包装对象的实例。

var obj = Object(1);
obj instanceof Object // true
obj instanceof Number // true
var obj = Object('foo');
obj instanceof Object // true
obj instanceof String // true
var obj = Object(true);
obj instanceof Object // true
obj instanceof Boolean // true

在上面代码中,Object函数的参数是各种原始类型的值,转换成对象就是原始类型值对应的包装对象。

【示例3】如果Object方法的参数是一个对象,它总是返回该对象,即不用转换。

var arr = [];
var obj = Object(arr); // 返回原数组 
obj === arr // true
var value = {};
var obj = Object(value) // 返回原对象 
obj === value // true
var fn = function () {};
var obj = Object(fn); // 返回原函数 
obj === fn // true

利用这一点,可以写一个判断变量是否为对象的函数。

function isObject(value) {
  return value === Object(value);
}
isObject([]) // true
isObject(true) // false