# 对象
现实生活中: 万物皆对象,对象时
一个具体的事物,看的见摸得着、js中对象是一组无序的相关属性的方法的集合,所有的事物都是对象,例如字符串数值数组函数
对象时由属性的方法组成的
- 属性:事物的特征,在对象中用属性来表示(常用名词)
- 方法:事物的行为,在对象中用方法来表示(常用动词)
# 为什么需要对象
保存一个值时可以使用变量,保存多个值(一组值)时,可以使用数组,如果要保存一个人完整信息呢?
var arr = [‘小明’ ,‘男’,128]
# 创建对象的三种方式
- 利用
字面量创建对象 就是花括号{}里面包含了表达这个具体事物(对象)的属性和方法<script> // 利用字面量创建对象{} var obj = {}; // 创建了一个空的对象 var obj = { uname: '小明', age : 18, sex : '男', sayH: function(){ console.log('hello'); } } // (1). 里面的属性或者方法我们采取键值对的形式 键 属性名: 值 属性名 // (2). 多个属性或者方法中用逗号隔开 // (3). 方法冒号后面跟的是一个 匿名函数 // 2 使用对象 // (1). 调用对象的属性 我们采取对象名 属性名 我们理解为 的 console.log(obj.uname); // (2)调用属性还有一种方法,对象名['属性名'] console.log(obj['sex']); // (3)调用对象的方法 sayH 对象名() 千万别忘记 小括号 obj.sayH() </script>
- 利用
new Object创建对象、<script> // 利用 new object 创建对象 var obj =new Object(); //创建了一个空的对象 obj.uname ='张三'; obj.age = 10; obj.sex = '男'; obj.sayH =function(){ console.log('hello'); } // (1)我们是利用 等号 = 赋值的方法 添加对象的属性和方法 // (2) 每个属性和方法之间用 分号结束 console.log(obj.uname); console.log(obj['sex']); obj.sayH(); </script>
- 利用
函数创建对象<script> // 利用构造函数创建对象 // 语法格式 // function obj(){ // this.属性 =值; // this.方法= function(){} // } // new 构造函数名(); function Spop(name,age,sex){ this.name = name; this.age = age; this.sex = sex; this.sing = function(song){ console.log(song); } } var ll=new Spop('丽华',19,'男'); // console.log(typeof ll); console.log(ll.name); console.log(ll.age); console.log(ll.sex); ll.sing('haiheai') var l=new Spop('丽华2',19,'男'); // console.log(typeof ll); console.log(l.name); console.log(l.age); console.log(l.sex); l.sing('你好') // 1. 构造函数名字首字母要大写 // 2. 我们构造函数不需要return 就可以返回结果 // 3. 我们调用构造函数 必须使用new // 4. 我们只要new Star() 调用函数就创建一个对象 l{} // 5. 我们属性和方法前面必须 添加this </script>
# 变量、属性、函数、方法的区别
- 变量: 单独声明赋值,单独存在
- 属性:对象里面的变量称为属性,不需要声明,用来描述该对象的特征
- 函数: 单独存在的,通过“函数名()” 的方式就可以调用
- 方法: 对象里面的函数称为方法,方法不需要声明,使用“对象.方法名()”的方式就可以调用,方法用来描述该对象的行为和功能
<script> // 变量和属性 相同的 他们都是用来存储数据的 // 变量和属性的相同点 他们都是用来存储数据的 var num = 10; var obj ={ age : 18, fn1: function(){ } } console.log(obj.age); function fn(){ } // 变量 单独声明并赋值 使用的时候写变量名 单独存在 // 属性 在对象里面的不需要声明的使用的时候必须是 对象.属性 // 2 函数的方法的相同点 都是 实现某种功能 做某件事 // 函数是单独声明的 并且调用的 函数名() 单独存在的 // 方法在对象里面 调用的时候 对象.方法() </script>
# new关键字
<script>
// new关键字执行过程
// 1.new 构造函数可以在内存中创建了一个空的对象
// 2.this 就会指向刚才创建的空对象
// 3. 执行构造函数里面的代码 给这个空对象添加属性和方法
// 4.返回这个对象
function Str(name,age,sex){
this.name = name,
this.age = age,
this.sex = sex,
this.sing = function(song){
console.log(song);
}
}
var xiao = new Str('小米',17,'男');
console.log(xiao);
xiao.sing('病态');
</script>
# 遍历对象属性
<script>
// 遍历对象
var obj = {
name : 'yys',
age : 45,
sex : '男',
sun : function(){}
}
// for in 遍历对象
for(var k in obj){
console.log(k); // k 输出属性吗名
console.log(obj[k]); obj[k]// 得到的是属性值
}
// 我们使用 for in 里面的变量 我们喜欢写k 或者key
</script>
# 小结
- 对象可以让代码结构更清晰
- 对象复杂数据类型object
- 本质:对象就是一组无序的相关的属性和方法的集合
- 构造函数泛指某一大类,比如苹果,不管是红色苹果还是绿色苹果,都统称为苹果
- 对象实例特指一个事物,比如这个苹果、正在给你们讲课的考试等
- for in 语句用于对 对象的属性进行循环操作