ECMAScript中的Object的对象类型,是一种比较复杂的复合数据类型。它本质上包含了部分数据类型,比如数组、函数数据类型、DOM其实等都属于Object对象。对象可以通过执行new操作符后跟要创建的对象类型的名称来创建。而创建Object类型的实例并为其添加属性或方法,就可以自定义对象,如下所示:
这个语法其实和Java中创建对象的语法类似;不过在ECMAScript中,对象创建有个特点,如果不需要传入参数的话,则可以省略后面的括号。也就是说,类似于上述的案例,在不传递参数的情况下,可以这样去写:
仅仅创建 Object 的实例并没有什么用处,但关键是要理解一个重要的思想:即在 ECMAScript中,(就像Java中的 java.lang.Object 对象一样) Object 类型是所有它 的实例的基础。换句话说, Object 类型所具有的任何属性和方法也同样存在于更具 体的对象中。
Object 的每个实例都具有下列属性和方法:
constructor :保存着用于创建当前对象的函数。对于前面的例子而言,构造函数(constructor)就是 Object() 。
hasOwnProperty(propertyName) :用于检查给定的属性在当前对象实例中(而不是在实例的原型中)是否存在。其中,作为参数的属性名(propertyName )必须以字符串形式指定(例如:o.hasOwnProperty(“name”) )。
isPrototypeOf(object) :用于检查传入的对象是否是另一个对象的原型。
propertyIsEnumerable(propertyName) :用于检查给定的属性是否能够使用 for in 语句来枚举。与 hasOwnProperty() 方法一样,作为参数的属性名必须以字符串形式指定。
toLocaleString() :返回对象的字符串表示,该字符串与执行环境的地区对应。
toString() :返回对象的字符串表示。
valueOf() :返回对象的字符串、数值或布尔值表示。通常与 toString() 方法的返回值相同。
由于在ECMAScript中Object是所有对象的基础,因此所有的对象都具备这些基本的属性和方法。所以在 JavaScript 中, window、document、数组等都是对象,使用 typeof 对它们操作时,得到的结果为:object。例如:
在 JavaScript 中有一个关键字为 null,该关键字表示没有对象,或者说对象是空的,用于定义空的或不存在的引用。当一个变量需要引用对象类型时,在声明时如果没有指向具体对象,最好使用 null 给它赋初始值。
本文原创,未经作者允许不可转载!
更多内容,欢迎关注作者微信公众号:李游Leo老师前端讲堂!