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