对象
对象
- 原生对象是JavaScript中专门用于描述复合类型数据的一种数据类型(即对象)
- 复合类型数据本身是一个整体,改数据包含多个基本数据类型的数据,比如一个商品有商品名、价格、分量、该商品就是一个对象,就是复合数据类型。 由多个基本数据数据构成一个整体,这个整体就是对象。就是一个商品。
创建对象
-
对象的创建方式:
-
使用字面量创建:{ }
let / var / const 对象名 = { }
-
创建空对象:new Object()
- 通过Object来创建对象:是JavaScript中所有对象的基类。
练习2:
//通过Object创建一个对象,该对象包含,bookid、bookName、publishing三个属性,包含setBook(name):修改bookName属性值,setPublishing(publish):修改publishing属性值 let obj = new Object(); obj.bookId=`001` obj.bookName=`三国` obj.publishing=`商务出版社` obj.setBookName = function(name) { this.bookName = name //this代表当前对象obj } obj.setpublishing = function (publishing) { this.publishing = publishing } obj.showBookInfo = function () { console.log(`图书编号`,this.bookId); console.log(`图书名字`,this.bookName); console.log(`图书出版社`,this.publishing); } obj.showBookInfo() console.log(`-------------------------`); obj.setBookName(`水浒传`) obj.setpublishing(`机械工业`) obj.showBookInfo() console.log(obj);
-
-
利用构造函数创建对象
- function 构造函数名(【参数】){ this.属性名 = 属性值 this.方法名 = fuchtion(【参数】){ 方法体语句 } }
1.创建一个空的对象
var obj = new Object();
var obj={};//字面量形式,推荐使用
2.创建一个带有数据的对象
var obj = {
属性名1:属性值1,(逗号结束)
}
3.使用构造函数:new构造函数名—(【参数】)---重点难点
function 构造函数名(【参数】){
this.属性名 = 属性值
this.函数名 = function(【参数】){
函数体语句
}
}
例子:
var obj = new Object();
obj.name = `包包大人`;
obj.sex = `男`;
obj.age = 23;
obj.height = 179;
obj.weight = 160;
var obj = {
name:"包包大人",
sex:`男`,
age:23,
height:179,
weight:160,
}
console.log(obj);
- 注意:
- 属性名其实是一个字符串类型(引号可以省略不写)
- 属性名又称为键,属性值又称为值。合起来成为
键值对
,他们是成对出现的
对象的属性
- 属性是指该对象中的一个数据。属性名是该数据的名字或类型,属性值是指该数据本身。**属性就是对象的一个数据,属性值就是数据本身 **
获取对象的某个属性值
对象名.属性名
对象名["属性名"]//必须是双引号,单引号不行
var obj = {
name:"包包大人",
sex:`男`,
"age":23,
height:179,
weight:160,
eat:function(){
console.log(`包包在吃包子`)
}
}
console.log(obj);
//获取对象的某个属性
console.log(obj.age);
console.log(obj["age"]);
修改或添加一个属性
对象名.属性名 = 属性值
//修改对象某个属性
obj.hobby=`csgo`
obj.age=25;
console.log(obj);
- 注意:如果改属性名在对象中已经存在,那么就是修改数据,如果不存在,则添加新的属性名和属性值。
对象的遍历
-
通过
for-in
循环来遍历对象 -
语法:
for(var 变量名 in 对象名){ //for-in每次都会把当前遍历的属性名赋值给变量名,需要手动通过属性名找到对应的属性值, console.log(变量名);//属性名拿到的是每一个属性名,是一个string类型的数据 console.log(obj[prop]);// 拿到每个属性名对应的属性值 } } 例子: var obj = { name:"包包大人", sex:`男`, "age":23, height:179, weight:160, } for(var prop in obj){ console.log(prop);//prop拿到的是每一个属性名,是一个string类型的数据 console.log(obj[prop]);//拿到每个属性名对应的属性值 }
对象的属性或方法的访问方式,对象名[‘属性名或方法名’]
let people = { id:`116011`, name:`玛卡巴卡`, age:'23', show:function(){ console.log(`姓名:`,this.name); // return 123; } } for (let i in people) { console.log(i+`:`+people[i]); } console.log(`***********************************`); console.log(people['name']); console.log(people['age']); console.log(people[`id`]); // console.log(people[`show`]()); people['show']()//调用
in运算符
-
判断对象中是否存在某个属性或方法
语法:
console.log('Address' in people);//判断是否有Address这个成员