十六、对象
1.什么是对象?
对象是一个具体的事物,实际生活的所有万物皆可对象。
- 本质:无序的相关属性和方法的集合
- 属性:事物的特征(名词)
- 方法:事务的行为(动词)
2.为什么需要?
保存一个值,可以用变量
保存多个值,可以用数组
保存一个人/物的完整信息,可以用对象的方式
3.创建对象的方式
(1)利用字面量创建对象
对象字面量:花括号{ }
①创建空对象
var obj = {};
②创建对象并赋属性
- 属性与方法采取键值对的方式【属性名 : 值】
- 多个属性方法利用逗号【,】隔开
- 方法冒号后是匿名函数
- 对象最后以分号【;】结束
var obj = { uname : '张三疯', age : 18, sex : '男', //定义方法 sayHi:function(){ //方法体 } }
(2)利用new Object创建对象
- 利用 等号(=)赋值的方法,添加对象的属性和方法
- 属性和方法都采用追加方式
①创建对象
var obj = new Object();
②创建属性--追加方式
obj.name = '张三疯'; obj.age = 18; obj.sex = '男';
③创建方法--类似函数表达式(没有var)
obj.sayHi = function() { //方法体 }
④示例
var person = new Object(); person.name = '鸣人'; person.age = 19; person.sex = '男'; person.skill = function(){ alert('影分身之术'); }
(3)利用构造函数创建对象
①先创建构造函数--->再创建对象
//1.声明并赋值构造函数 function 构造函数名(形参1,形参2){ this.属性 = 值; this.方法 =function(对象中方法的形参1,对象中方法的形参2){ //方法体 } } //2.调用函数将结果返回给一个变量,无需return就可返回 //返回的是对象类型哦! var 对象名 = new 构造函数名(实参1,实参2);
②调用对象
对象名.属性; 对象名.函数(传参);
③示例
function Person(name,age,sex){ this.name = name; this.age = age; this.sex = sex; this.sayHi = function(hua){ alert(hua); } } var res = new Person(); res.sayHi('你好哇!');
(4)示例--创建一个电脑对象
// 电脑对象 // ①字面量创建对象 var computer = { color : '颜色', weight : '重量', type : '型号', watchFilm : function(){ console.log('看电影啦~'); } } console.log(computer); // ②new Object创建 var computer1 = new Object(); computer1.color = '颜色'; console.log(computer1); // ③利用构造函数 function Conputer(color,weight,bank,type){ this,color = color; this.weight = weight; this.bank = bank; this.type = type; this.watchFilm = function(){ console.log('看电影啦~'); } } var computer3 = new Conputer('红色','180kg','联想','笔记本电脑'); console.log(computer3);
4.使用对象
(1)调用对象属性
- 还可以用来判断是否有该属性值
①对象名.属性名
obj.sex;//输出obj对象的sex属性值
②对象名['属性名']--字符串常用
obj['sex']//输出obj对象的sex属性值
(2)调用对象方法
①对象名.函数名()
- 注意函数后要有小括号
obj.sayHi();//调用obj对象的sayHi方法
5.遍历对象属性-for..in
用于对数组或对象属性进行循环操作
(1)for...in语法格式
-
变量常用 k 或 key代替。
-
k 得到属性名
-
对象名[k]得到属性值
-
方法名也可遍历哦,但不常用
for (变量 in 对象){//一般用k //1️⃣输出k,得到对象属性名 //2️⃣输出obj[k],得到对象属性值 }
(2)示例
var obj = { uname : '张三疯', age : 18, sex : '男', } for(k in obj){ alert(k);//输出属性名 alert(obj[k])//输出属性值 }
6.小结
十七、变量、属性、函数、方法的区别
1.变量与属性区分
(1)相同点
都用于存储数据
(2)不同点
变量:单独声明并赋值,使用直接写“变量名“(单独使用)
**属性:**与对象一起存在,使用需写 “对象名.属性名“(和对象一起)
2.函数与方法区分
(1)相同点
都用于实现某功能做某事,都是动词
(2)不同点
**函数:**单纯声明并调用的,调用直接写 “函数名( )“ 。
**方法:**在对象里,调用需写 “对象.方法名()“ 。