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