概述
对象的相关概念
什么是对象?
-
在 JavaScript 中,对象是一组无序的相关属性和方法的集合,所有的事物都是对象,例如字符串、数值、数组、函数等。
-
对象是由属性和方法组成的
-
属性:事物的特征,在对象中用属性来表示(常用名词)
-
方法:事物的行为,在对象中用方法来表示(常用动词)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CxMlEWd1-1628091491881)(C:Users26036Desktopimages图片3.png)]
-
为什么需要对象?
-
保存一个值时,可以使用变量,保存多个值(一组值)时,可以使用数组。
-
如果要保存一个人的完整信息呢?
-
例如,将“张三疯”的个人的信息保存在数组中的方式为:
var arr = [‘张三疯’, ‘男', 128,154];
-
上述例子中用数组保存数据的缺点是:数据只能通过索引值访问,开发者需要清晰的清楚所有的数据的排行才能准确地获取数据,而当数据量庞大时,不可能做到记忆所有数据的索引值。
-
为了让更好地存储一组数据,对象应运而生:对象中为每项数据设置了属性名称,可以访问数据更语义化,数据结构清晰,表意明显,方便开发者使用。
-
使用对象记录上组数据为:
var obj = {
"name":"张三疯",
"sex":"男",
"age":128,
"height":154
}
- JS中的对象表达结构更清晰,更强大。
总结
- 万物皆对象,对象是 一个具体的事物 ,看得见摸得着的实物。例如,一本书、一辆汽车
- 在 JavaScript 中,对象是一组无序的相关属性和方法的集合
- 为啥要有对象:为了方便管理多个变量,和多个函数
- 对象中的变量,称之为属性
- 对象中的函数,称之为方法
创建对象的三种方式
利用字面量创建对象
语法:
var obj = {key:value,key2:value2...};
-
key键:相当于属性名
-
value值:相当于属性值,可以是任意类型的值(数字类型、字符串类型、布尔类型,函数类型等)
- 在对象中的方法,也可以理解为是一个属性,可以称之为方法属性
注意:
- 里面的属性或者方法我们采取键值对的形式 键 属性名 : 值 属性值
- 多个属性或者方法中间用逗号隔开的
- 方法冒号后面跟的是一个匿名函数
示例代码:
var star = {// star即是创建的对象。
name : 'pink',
age : 18,
sex : '男',
sayHi : function(){
alert('大家好啊~');
}
};
对象的使用
访问对象的属性
//1.点语法:对象名.属性名
console.log(star.name)
//2.中括号语法:对象名['属性名']
console.log(star['name']) //star[name],先找name变量的值:'age',star['age']---- 18
调用对象的方法
//1.点语法:对象.方法()
star.sayHi(); // 调用方法,注意,一定不要忘记带后面的括号
//2.中括号语法:对象['方法']()
star['sayHi']();
总结
- 其实调用属性和方法语法都一样
- 只不过方法需要添加小括号
- 方法,也可以称之为属性,可以叫做方法属性
变量、属性、函数、方法总结
-
属性是对象的一部分,而变量不是对象的一部分,变量是单独存储数据的容器
- 变量:单独声明赋值,单独存在。使用的时候直接写
变量名
- 属性:对象里面的变量称为属性,不需要声明,用来描述该对象的特征。使用的时候必须是
对象名.属性名
- 变量:单独声明赋值,单独存在。使用的时候直接写
-
方法是对象的一部分,函数不是对象的一部分,函数是单独封装操作的容器
- 函数:单独存在的,通过
函数名()
的方式就可以调用 - 方法:对象里面的函数称为方法,方法不需要声明,使用
对象.方法名()
的方式就可以调用,方法用来描述该对象的行为和功能。
- 函数:单独存在的,通过
总结
- 对象中的变量,称之为属性
- 对象中的函数,称之为方法
对象与数组
对比一下普通对象和数组对象(数组也是对象)。
声明:
var star = {
name : 'pink',
age : 18,
sex : '男',
sayHi : function(){
alert('大家好啊~');
}
};
var arr = [1,2,3];
var arry = [
0: 1,
1: 2,
2: 3
];
存储结构:key:value
- 对象的key是:属性名
- 数组的key是:索引
获取: 都是通过key获取value
star['name'];//通过中括号key获取对象的value,需要添加引号。
arr[0];//数组的索引不需要添加引号
//对象还有一种特殊的方式,点语法
star.name;
练习
//请用对象字面量的形式创建一个名字为可可的狗对象。
//具体信息如下:
//姓名:可可
//类型(type):阿拉斯加犬
//年龄:5岁,
//颜色:棕红色。
//技能:汪汪汪(bark) ,演电影 (showFilm)
var dog = {
name: '可可',
type: '阿拉斯加犬',
age: 8,
color: '棕红色',
bark: function() {
alert('汪汪汪');
},
showFilm: function() {
alert('我会演电影');
}
}
console.log(dog.name);
dog.bark();
利用 new Object 创建对象
语法:
var andy = new Object();
通过内置构造函数Object创建对象,此时andy变量已经保存了创建出来的空对象
给空对象添加属性和方法
- 利用
等号 = 赋值的方法
添加对象的属性和方法 - 每个属性和方法之间用
分号
结束
示例代码:
andy.name = 'pink';//给andy添加name属性,并赋值
andy.age = 18;
andy.sex = '男';
andy.sayHi = function(){//给andy添加sayHi方法,并赋值
alert('大家好啊~');
}
注意:
- Object() :第一个字母大写
- new Object() :需要 new 关键字
- 使用的格式:对象.属性 = 值;
- 调用属性:
obj.uname;
或者obj['uname'];
- 调用方法:
obj.sayHi();
或者obj['sayHi']();
练习
//请用new Object 形式创建一个鸣人对象。
//具体信息如下:
//姓名:鸣人
//性别:男
//年龄:19岁
//技能(skill):影分身术
var nld = new Object();
nld.name = '鸣人';
nld.sex = '男';
nld.age = 19;
nld.skill = function() {
alert('色诱术');
}
利用构造函数创建对象
为啥需要构造函数
- 因为这个函数不一样,里面封装的不是普通代码,而是创建对象的代码,所以叫构造函数
- 构造函数,就是把我们对象里面一些相同的属性和方法抽象出来封装到函数里面
- 构造函数: 特殊的函数,能够构造对象(创建对象)的函数
语法
定义构造函数的语法:
function 构造函数名(形参1,形参2,形参3) {// 构造函数的形参与对象的普通属性是一致的
this.属性名1 = 形参1;//形参就是要给属性赋值
this.属性名2 = 形参2;
this.属性名3 = 形参3;
this.方法名 = 函数体;//函数体不需要传递
}
// 注意:This 可以理解为当前对象。This的内心独白:谁调用我,我就代表谁
构造函数的调用语法:通过new
调用
var obj = new 构造函数名(实参1,实参2,实参3)
// 以上代码中,obj即接收到构造函数创建出来的对象。
注意事项:
- 构造函数约定首字母大写。
- 函数内的属性和方法前面需要添加 this ,表示当前对象的属性和方法。
- 构造函数中不需要 return 就可以返回结果。
- 当我们创建对象的时候,必须用 new 来调用构造函数。
例子 :(构造函数的作用:就是用来创建对象/构造对象,并且给对象添加属性和方法)
//需求:定义一个人类构造函数,创建的人类对象包含属性:姓名,年龄,性别,方法:打招呼。
function Person(name, age, sex) {
//
构造函数的参数与对象的普通属性是一致的。
// 1. 创建了对象this
js内部做的第一件事情
//var
this = new Object();
this.name = name;// 属性的值,都是通过同名的形参来赋值的
this.age = age;
this.sex = sex;
this.sayHi = function() { //函数不需要通过形参来赋值
alert('我的名字叫:' + this.name + ',年龄:' + this.age + ',性别:' + this.sex);
}
//return this;
2. js内部做的第二件事情
}
// 创建出来一个大白的人类对象,大白的名字是大白,100,男
var bigbai = new Person('大白', 100, '男'); // var bigbai = this;
// this 就是即将创建出来的大白对象// this:这个,这个对象
console.log(bigbai.name);// 大白
var smallbai = new Person('小白', 21, '男');
console.log(bigbai.name);
console.log(smallbai.name);
// 明星构造函数
function Star(name, age, sex) {
this.name = name;
this.age = age;
this.sex = sex;
this.sing = function(sang) {
console.log(sang);
}
}
var ldh = new Star('刘德华', 18, '男');
console.log(ldh.name);
console.log(ldh['sex']);
ldh.sing('冰雨');
练习
// 利用构造函数创建两个英雄对象。 函数中的公共部分包括: 姓名属性(name), 类型属性( type),
// 血量属性( blood) 和攻击方式( attack)。
// 英雄对象的信息如下:
// 廉颇 力量型 500 血量 攻击: 近战
// 后羿 射手型 100 血量 攻击: 远程
function Hero(name, type, blood) { // 构造函数的参数,就是对象的属性
// this.xxx = xxx;
this.name = name;
this.type = type;
this.blood = blood;
this.attack = function(attackType) {
alert('我的攻击类型是:' + attackType);
};
}
var lianPo = new Hero('廉颇', '力量型', '500');
console.log(lianPo.name);
lianPo.attack('近战');
构造函数与对象的区别
- 构造函数,如
Stars()
,抽象了对象的公共部分,封装到了函数里面,它泛指某一大类(class) - 创建对象,如
new Stars()
,特指某一个(具体的某一个),通过 new 关键字创建对象的过程我们也称为对象实例化 - 实例:就是实际的例子(某一大类中的实际的例子)
- 对象又叫做实例
- 创建对象的过程,也叫做实例化/对象化
- 具体区别如下图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1jAYCQHA-1628091491886)(C:Users26036Desktopimages构造函数对象区别.jpg)]
new关键字的作用
- 在构造函数代码开始执行之前,在内存中创建一个空对象;
- 修改this的指向,把this指向创建出来的空对象;
- 执行函数的代码,给这个空对象添加属性和方法
- 在函数完成之后,返回this—即创建出来的对象
遍历对象
for...in
语句用于对数组或者对象的属性进行循环操作。
语法:
for (变量 in 对象名字) {
// 在此执行代码
}
语法中的变量是自定义的,它需要符合命名规范,通常我们会将这个变量写为 k 或者 key。
示例代码:
var obj = {
name: '李老师',
age: 18,
sex: '男',
fn: function() {}
};
for (var k in obj) {
// for...in...遍历obj,其实遍历的是obj中的属性 ['name','age']
console.log(k);
// 这里的 k 是属性名 (字符串)
‘name’,'age'
console.log(obj[k]); // 这里的 obj[k] 是属性值
obj['name'] obj['age']
}
// 结论: 中括号语法
// 如果没有中括号,得到的是属性名
// 如果有中括号,得到的是属性值
-
理解:for…in…遍历,其实是在变量obj对象中的所有属性k,然后我们可以根据k获取属性值
-
其实跟普通for循环,变量数组是一样的(都是遍历key,根据key获取value)
var arr = ['a','b'] ;//[0:a,1:b] for (var i=0;i<arr.length;i++){ // i是 数组的啥呢?索引 , key i; // 0,1 arr[i]; // a ,b }
最后
以上就是多情母鸡为你收集整理的JavaScript第五天学习总结—— 对象、创建对象的三种方式、遍历对象对象的相关概念创建对象的三种方式遍历对象的全部内容,希望文章能够帮你解决JavaScript第五天学习总结—— 对象、创建对象的三种方式、遍历对象对象的相关概念创建对象的三种方式遍历对象所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复