对象

什么是对象

现实生活中,万物皆对象,对象就是一个具体的事物,看得见摸得着的实物。例如,一本书,一脸汽车,一个人可以是“对象”,一个数据库,一张网页,一个服务器也可称“对象”。

在javascript中,对象是一组无序的相关属性和方法的集合,所有的事物都是对象,例如:字符串、数组、数值、函数。

对象是有属性和方法组成。

属性:事物的特征,在对象中用属性来表示。

方法:事物的行为,在对象中用方法来表示。

为什么需要对象

保存一个值时,可以用变量,保存多个值(一组值)时,可以使用数组。如果要保存一个人的完整信息呢

例如,将“张三”的个人信息保存在数组中的方式为

var arr = ['张三','男','30','176'];

J s中的对象表达结构更清晰,更强大,张三的个人信息在对象中的表达结构如下


张三.姓名='张三';
张三.性别=‘男';
张三.年龄= 128;
张三.身高=154 ;



person . name =张三';
person . sex =男';
person.age = 128;
person. height = 154 ;

创建对象的三种方式

利用字面量创建对象

对象字面量:花括号{ }里面包含了这个具体事物(对象)的属性与方法。

<script>
//1利用对象字面量创建对象{}
// var obj={};创建了一个空的对象
var obj={
uname :'张三',
age:30,
sex:'男',
say:function(){
console.log('我会唱歌');

}
}


//(1)里面的属性或者方法,我们采用键值对的形式 键:属性名 值:属性值
//(2)多个属性或者方法中间用逗号隔开
//(3)方法冒号后面跟的是一个匿名函数
//2使用对象
//(1)调用对象的属性 我们采用 对象名.属性名
console.log (obj.uname)
//(2)调用对象还有一种方法 对象名['属性名']
console.log(obj['age'])
//(调用对象的方法 say 对象名.方法名() 不要忘记小括号)
obj.say()

</script>

变量、属性、函数、方法总结

  • 变量: 单独声明并赋值 ,使用时直接写属性名 ,单独存在

  • 属性: 在对象里面的不需要声明的 使用时必须是 对象.属性

  • 函数:单独存在 通过 “ 函数名()”的方式 就可以调用

  • 方法: 在对象里面的函数称为方法,方法不需要声明,使用“对象.方法名()”的方法可以调用,方法用来描述该对象的行为和功能。

<script>


// 变量、属性 ||函数、方法的区别
//1变量和属性的相同点 它们都是用来储存数据的
var num = 10 ;

var obj = {
age:18
}
console.log(obj.age);
//变量 单独声明并赋值 使用时直接写属性名 单独存在
//属性 在对象里面的不需要声明的 使用时必须是 对象.属性

//2函数和方法的相同点 都是实现某种功能的 做某件事
//函数是单独声明的 并且调用的 函数名() 单独存在的
//方法: 在对象里面 ,调用的时候 对象.方法()
</script>

利用new Object创建对象

跟我们前面学的 new Array() 原理一致

var person = new Obect();
person.name = '张三';
person.age = 18;
person.sex = '男';
person.sayHi = function(){
alert('大家好啊~');
}
  • Object() :第一个字母大写

  • new Object() :需要 new 关键字

  • 使用的格式:对象.属性 = 值

<script>
var obj = new Object()//创建了一个空对象
obj.uname = '张三';
obj.age = '18';
obj.sex = '男';
obj.say = function () {
console.log('哈哈哈');
}
//(1)我们利用 等号=赋值号的方法 添加对象的属性和方法
//(2)每个属性和方法之间用 分号结束

console.log(obj.uname)
console.log(obj['uname'])
obj.say();

</script>

利用构造函数创建对象

构造函数 :是一种特殊的函数,主要用来初始化对象,即为对象成员变量赋初始值,它总与 new 运算符一起 使用。我们可以把对象中一些公共的属性和方法抽取出来,然后封装到这个函数里面。

在 j s 中,使用构造函数要时要注意以下两点:

  • 构造函数用于创建某一类对象,其首字母要大写

  • 构造函数要和 new 一起使用才有意义

注意事项

  • 构造函数命名为首字母大写

  • 函数内的属性和方法前面需要添加 this ,表示当前对象的属性和方

  • 构造函数不需要return 就可以返回返回值

  • 构造对象时,必须使用new来调用构造函数

// 利用构造函数创建对象

// 构造四大名著的对象,相同属性:书名、姓名、时期、方法:写作
//构造函数语法格式
// function 构造函数名(){
// this.属性='值';
// this.方法=function(){}

// }
// new 构造函数名();


function Masterp(book, uname, time) {//公共属性
this.book=book;
this.uname=uname;
this.time=time;
this.write=function(introduce){
console.log(introduce)
}

}
var xyj= new Masterp('西游记','吴承恩','明代')//调用函数返回一个对象
console.log(xyj.book)
console.log(xyj.uname)
console.log(xyj.time)
xyj.write('我是吴承恩')

var sgyy = new Masterp('三国演义', '罗贯中', '元末明初')//调用函数返回一个对象

console.log(sgyy.book)
console.log(sgyy.uname)
console.log(sgyy.time)
xyj.write('我是罗贯中')

构造函数和对象

构造函数,如 Masterp (),抽象了对象的公共部分,封装到了函数里面,它泛指某一大类(class)

创建对象,如 new Masterp (),特指某一个,通过 new 关键字创建对象的过程我们也称为对象实例化

new关键字

new 在执行时会做四件事情:

  1. 在内存中创建一个新的空对象。
  2. 让 this 指向这个新的对象。
  3. 执行构造函数里面的代码,给这个新对象添加属性和方法。
  4. 返回这个新对象(所以构造函数里面不需要return)。

遍历对象属性

for…in 语句用于对数组或者对象的属性进行循环操作

 function Masterp(book, uname, time) {
this.book=book;
this.uname=uname;
this.time=time;
this.write=function(introduce){
console.log(introduce)
}

}
//for...in 里面的变量 我们通常写作k或者key

for(var k in sgyy){
//console.log(k)//k 是变量 输出 得到属性名
console.log(sgyy[k])//sgyy[k]得到属性值

}

总结

  1. 对象可以让代码结构更清晰
  2. 对象复杂数据类型object。
  3. 本质:对象就是一组无序的相关属性和方法的集合
  4. 构造函数泛指某一大类,比如苹果,不管是红色苹果还是绿色苹果,都统称为苹果
  5. 对象实例特指一个事物,比如这个苹果、正在给你们讲课的老师等
  6. for…in 语句用于对对象的属性进行循环操作。