# (十)对象 ## 1. 对象 ### 1.1 什么是对象? 在JavaScript中,对象是一组无序的相关属性和方法的集合,所有的事物都是对象,例如字符串、数值、数组、函数等。 对象是由属性和方法组成的。 - 属性:事物的特征,在对象中用属性来表示(常用名词) - 方法:事物的行为,在对象中用方法来表示(常用动词) ### 1.2 为什么需要对象? ## 2. 创建对象 - 使用字面量创建对象 - 使用 `new Object` 创建对象 - 利用构造函数创建对象 ### 2.1 字面量创建 使用 `{}` 创建,包含属性和方法,采用键值对表示,创建的对象称为对象字面量。 ```js var obj = { uname: 'MurphyChen', age: 18, sayHi: function () { console.log('Hi!); } } ``` ### 2.2 使用对象的属性和方法 1. 调用对象的属性 ```js // 方法一 objectName.attrName // 方法二 objectName['attrName'] // 不要忘记引号 ``` 2. 调用对象的方法 ```js objectName.funcName();//不要忘记括号 ``` ### 2.3 使用 newObject 创建对象 ```js // 创建空对象 let obj = new Object(); //添加属性 obj.uname = 'MurphyChen'; obj.age = 18; obj.sayHi = function() { console.log('Hi!'); } ``` ### 2.4 利用构造函数创建对象 前两种创建对象的方法,每次都只能创建一个对象。但需要多个具有相同属性和方法的对象的时候,就需要使用构造函数来创建。 构造函数将相同的属性和方法封装在一个函数里。 构造函数语法: ```js // 定义 function ConFuncName(params) { this.attr = value; this.methods = function() {}; } // 调用 let obj = new ConFuncName(params); ``` - 构造函数名单词首字母均大写 - 函数不需要返回值 举例 ```js function Star(uname, age, sex) { this.name = uname; this.age = age; this.sex = sex; } let ldh = new Star('刘德华', 18, '男'); let zxy = new Star('张学友', 19, '男'); console.log(typeof ldh); // object console.log(ldh.sex); // 男 console.log(zxy.name); // 张学友 ```