定义
对象 世界万物皆对象 只要可以抽象出一个概念的都是对象 对象是引用数据类型,是保存复杂数据类型的容器,它是多个属性(数据)和方法(功能)的集合 它允许动态的添加和删除属性
对象的三种创建方式
1.字面量
var obj = {
属性名1:属性值,
属性名2:属性值,
方法:function(){}
}
//获取对象
console.log(obj.属性名)
//调用方法
obj.方法名()
// 1.创建一个电脑对象
// 有颜色(color)、重量(weight)、品牌(brand)、型号(type)等属性,
// 有看电影(watch)、听音乐(listen)、打游戏(play)和敲代码(coding)等方法。
// 题目描述:
// 颜色、重量、品牌、型号是属性;看电影、听音乐、打游戏、敲代码是方法,
// 在调用方法时分别打印 “我在看电影/听音乐/打游戏/敲代码”
// 创建一个对象
var computer = {
color:'黑色',
weight:'2kg',
brand:'拯救者',
type:'R7000P',
watch:function(){
console.log('我在看电影');
},
listen:function(){
console.log('我在听音乐');
},
play:function(){
console.log('我在打游戏');
},
coding:function(){
console.log('我在敲代码');
}
}
// 获取对象
console.log(computer.color); //黑色
console.log(computer.type); //R7000P
// 调用方法
computer.watch()
2.new Object()创建
- 创建空对象
var obj = new Object()
- 给对象添加属性和方法
- 对象名.属性名=属性值
- 对象名.方法名=function(){}
- 输出对象的属性 obj.属性名
- 调用对象的方法 obj.方法名()
var computed = new Object()
computed.color='黑色';
computed.weight='2kg';
computed.brand='拯救者'
computed.type='R7000P';
computed.watch=function(){
console.log('我在看电影');
};
computed.listen=function(){
console.log('我在听音乐');
};
computed.play=function(){
console.log('我在打游戏');
};
computed.coding=function(){
console.log('我在敲代码');
}
console.log(computed.color);
// 调用方法
computed.watch()
注意:
- Object() :第一个字母大写
- new Object() :需要 new 关键字
- 使用的格式:对象.属性 = 值;
3.构造函数创建对象
- 在 JavaScript 中,用 new 关键字来调用的函数,称为构造函数。构造函数首字母一般大写
语法:
第一步:封装函数,将公有的属性和方法抽出来封装到函数中,创建构造函数
function 构造函数名(形参1,形参2,形参3){
this.属性名1=参数1
this.属性名2=参数2
this.属性名3=参数3
this.方法名=函数体
}
第二步:实例化对象 调用函数
var obj = new 构造函数名(实参1,实参2,实参3)
// 书写一个构造函数,用来创建学生对象,学生对象包括的内容有:
// 姓名(name)、学号(id)、性别(sex)、年级(grade)、打招呼(sayHi)
// —— 在弹出框中提示:“你好我是XXX”,其中XXX代表对象的name属性值
// 1.封装构造函数
function Person(name,id,sex,grade){
this.name=name
this.id=id
this.sex=sex
this.grade=grade
this.sayHi =function(){
alert('你好我是'+this.name)
}
}
// 2.通过new关键字调用函数
var p1 = new Person('zs',18,'男','六')
console.log(p1.name);
p1.sayHi()
对象的使用
-
对象的属性
- 对象中存储具体数据的 "键值对"中的 "键"称为对象的属性,即对象中存储具体数据的项
-
对象的方法
- 对象中存储函数的 "键值对"中的 "键"称为对象的方法,即对象中存储函数的项
-
访问对象的属性
- 对象里面的属性调用 : 对象.属性名 ,这个小点 . 就理解为“ 的 ”
- 对象里面属性的另一种调用方式 : 对象[‘属性名’],注意方括号里面的属性必须加引号
-
调用对象的方法
- 对象里面的方法调用:对象.方法名() ,注意这个方法名字后面一定加括号
-
变量、属性、函数、方法总结
属性是对象的一部分,而变量不是对象的一部分,变量是单独存储数据的容器
-
变量:单独声明赋值,单独存在
-
属性:对象里面的变量称为属性,不需要声明,用来描述该对象的特征
-
方法是对象的一部分,函数不是对象的一部分,函数是单独封装操作的容器
-
函数:单独存在的,通过“函数名()”的方式就可以调用
-
方法:对象里面的函数称为方法,方法不需要声明,使用“对象.方法名()”的方式就可以调用,方法用来描述该对象的行为和功能。
-
构造函数注意事项:
- 构造函数约定首字母大写。
- 函数内的属性和方法前面需要添加 this ,表示当前对象的属性和方法。
- 构造函数中不需要 return 返回结果。
- 当我们创建对象的时候,必须用 new 来调用构造函数。
构造函数和对象区别★★★
- 构造函数,如 Person(),抽象了对象的公共部分,封装到了函数里面,它泛指某一大类(class)
- 创建对象,如 new Person(),特指某一个,通过 new 关键字创建对象的过程我们也称为对象实例化
new关键字的作用★★★
- 1.在内存中创建了一个对象
- 2.对象内部的__proto__指向构造函数的prototype属性
- 3.构造函数中的this指向这个创建的新对象
- 4.执行构造函数内部的代码,给新创建的对象添加属性和方法
- 5.如果构造函数有返回值 该返回值是非空对象 则返回该对象,否则返回新创建的对象
对象遍历★★★★★
for...in 语句用于对数组或者对象的属性进行循环操作。
//语法
for(var 变量名 in对象名){
console.log(变量名) //遍历属性名
console.log(对象名[变量名]) //遍历属性值
}