ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] ## 5.1 Obeject类型 所有其他对象都继承Object对象。 **1. 创建Object实例(实例化对象)** 创建object实例的方式有两种: * 使用**new操作符**后跟Object构造函数 ~~~ var person = new Object(); person.name = "Nicholas"; person.age = 29; ~~~ * 使用**对象字面量**: ~~~ var person = { name : "Nicholas", age : 29, 5 : true } ~~~ **2.访问对象** 访问对象属性时一般使用**点表示法**,还有一种方括号表示法。 注意:如果对象属性名是不符合语法的或属性名是关键字或保留字,只能使用方括号表示法。例如: ~~~ var person = { "1a" : 1 }; person["1a"]; // 1 person.1a // 会报错 ~~~ **3.Object对象的静态方法** `Object.keys()、Object.getOwnPropertyNames()`方法 Object.keys()方法和Object.getOwnPropertyNames()方法一般用来遍历对象的属性,它们的参数都是一个对象,**返回一个数组,该数组的项都是对象自身的(不是继续原型的)的所有属性名**。两者的区别在于,Object.keys()只返回可枚举的属性,Object.getOwnPropertyNames()方法还返回不可枚举的属性名。 ~~~ var o = { p1: 123, p2: 456 }; Object.keys(o) // ["p1", "p2"] Object.getOwnPropertyNames(o) // ["p1", "p2"] ~~~ ~~~ var a = ["Hello", "World"]; Object.keys(a) // ["0", "1"] Object.getOwnPropertyNames(a) // ["0", "1", "length"] ~~~ 数组的length属性是不可枚举的。 **4.Object对象的实例方法** | 方法名 | 描述 | | --- | --- | | valueOf() | 返回当前对象对应的值,默认情况下返回对象本身。 | | toString() | 返回当前对象对应的字符串形式。 | | toLocaleString() | 返回当前对象对应的本地字符串形式。 | | hasOwnProperty() | 判断某个属性是否为当前对象自身的属性,还是继承自原型对象的属性。 如果是自身的属性,返回true,否则返回false。 | | isPrototypeOf() | 判断当前对象是否为另一个对象的原型。如果是,返回true,否则返回false。 | | propertyIsEnumerable() | 判断某个属性是否可枚举。 |