Object 对象
概述
JavaScript 原生提供Object
对象, 其他对象都继承自Object
对象,即都是Object
的实例。
Object的原生方法有两种:
本身方法 : 直接定义在Object
对象的方法。
Object.print = function (xxx) { //print方法直接定义在Object对象本身 console.log(xxx); };
实例方法 :定义在Object
原型对象Object.prototype
上的方法。可被Object
实例直接使用。
Object.prototype.print = function () { console.log(this); }; var obj = new Object(); obj.print() // Object
上面代码中,Object.prototype
定义了一个print
方法,然后生成一个Object
的实例obj
。obj
直接继承了Object.prototype
的属性和方法,可以直接使用obj.print
调用print
方法。也就是说,obj
对象的print
方法实质上就是调用Object.prototype.print
方法。
Object()
Object
本身是一个函数,将任意值转为对象, 常用于保证某个值一定是对象。
参数为空(orundefined
null
)返回一个空对象。
var obj = Object(); var obj = Object(undefined); var obj = Object(null); obj instanceof Object // true
instanceof
运算符用来验证,一个对象是否为指定的构造函数的实例。
obj instanceof Object
returntrue
,就表示obj
对象是Object
的实例。
如果参数是原始类型的值,Object
方法将其转为对应的包装对象的实例
var obj = Object(1); obj instanceof Object // true obj instanceof Number // true
Object函数的参数是原始类型的值,转换成对象就是原始类型值对应的包装对象。 若参数是一个对象,返回该对象,不用转换。
var arr = []; var obj = Object(arr); // 返回原数组 obj === arr // true
Object 构造函数
Object
还可以当作构造函数使用,可以使用new
命令。
Object
构造函数的首要用途,是直接通过它来生成新对象。
var obj = new Object();
通过var obj = new Object()
与字面量的写法var obj = {}
是等价的。
Object
构造函数的用法与工具方法很相似,几乎一模一样。使用时,可以接受一个参数,如果该参数是一个对象,则直接返回这个对象;如果是一个原始类型的值,则返回该值对应的包装对象
var o1 = {a: 1}; var o2 = new Object(o1); o1 === o2 // true var obj = new Object(123); obj instanceof Number // true