JavaScript-对象

1.对象

1.1什么是对象

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

对象由属性和方法构成

  • 属性:事物的特性,在对象中用属性来表示(常用名词)
  • 方法:事物的行为,在对象中用方法来表示(常用动词)

1.2为什么需要对象

保留一个值时,可以使用变量,保留多个值时,可以使用数组
保留一个人的完整信息呢?
例如,将某个人的个人信息保存在数组中的方式为:
var arr = ['张三', '男', 28, 178];
JS中的对象表达式结构更加清晰。张三的个人信息在对象中的表达结构如下:
person.name = '张三';
person.sex = '男';
person.age = 28;
person.height = 178;

2.创建对象的三种方式

在JavaScript中,现阶段我们可以采用三种方式来创建对象(object):

  • 利用字面量来创建
  • 利用new Object来创建
  • 利用构造函数来创建

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

  • 变量:单独声明赋值,单独存在
  • 属性:对象里面的变量称为属性,不需要声明,用来描述该对象的特征
  • 函数:单独存在,通过“函数名()”的方式就可以调用
  • 方法:对象里面的函数称为方法,方法不需要声明,使用“对象.方法名()”就可以调用,方法用来描述该对象的行为和功能

2.1利用字面量创建对象

对象字面量:就是花括号{}里面包含了表达这个具体事物(对象)的属性和方法。{}里面采取键值对的形式表示

  • 键:相当于是属性名
  • 值:相当于是属性值,可以是任意类型的值(数字、字符串、布尔值、函数)

对象的调用

  • 对象里面的属性调用:对象.属性名
  • 对象里面属性的另一种调用:对象[‘属性名’],要注意属性必须加引号
  • 对象里面方法的调用:对象.方法名(),注意方法后面要加括号
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>利用对象字面量来创建对象</title>
    <script>
        // var obj = {};//创建了一个空对象
        // 1.对象的创建
        var obj = {
            uname: '张三',
            age: 18,
            sex: '男',
            sayHi: function() {
                console.log('hi');
            }
        }
        // 2.对象的使用
        //调用对象的属性
        console.log(obj.uname);//对象.属性名    
        console.log(obj['age']);//对象名['属性名']
        //调用对象的方法
        obj.sayHi();//对象名.方法名()    
    </script>
</head>
<body>
    
</body>
</html>

2.2利用new Object创建对象

跟前面学的new Array()创建数组的原理一致
调用方式跟字面量创建相同

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>利用new Object创建对象</title>
    <script>
        var obj = new Object();//创建了一个空的对象
        //利用等号赋值的方法,添加对象的属性和方法
        //每个属性和方法之间用分号结束
        obj.name = '张三';
        obj.age = 18;
        obj.sex = '男';
        obj.sayHi = function() {
            console.log('hi');
        }
        console.log(obj.name);
        console.log(obj['age']);//注意单引号
        obj.sayHi();
    </script>
</head>
<body>
    
</body>
</html>

2.3利用构造函数创建对象

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

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>利用构造函数创建对象</title>
    <script>
        // 构造函数的语法格式
        // function 构造函数名() {
        //     this.属性 = 值;
        //     this.方法 = function() {};
        // }
        // new 构造函数名();
        function Star(name, age, sex) {//构造函数首字母大写,是为了与函数名区分
            this.uname = name;//注意前面要有this,还是为了跟函数区分
            this.age = age;
            this.sex = sex;
            this.sing = function(song) {
                console.log(song);
            }
        }
        var ldh = new Star('刘德华', 18, '男');//调用构造函数返回的是一个对象
        var zxy = new Star('张学友', 19, '男');
        console.log(typeof ldh); 
        console.log(ldh.uname);
        ldh.sing('冰雨');//调用方法
        console.log(ldh['sex']);
        console.log(zxy.age);
        zxy.sing('李香兰');
        // 1.构造函数名字首字母大写
        // 2.构造函数不需要return就可以返回结果,返回的是一个对象
        // 3.调用构造函数时必须使用new
        // 4.属性和方法前必须有this
    </script>
</head>
<body>
    
</body>
</html>

2.4构造函数与对象的区别

  • 构造函数,抽象了对象的公共部分,封装到函数里面,泛指一大类(class)
  • 利用构造函数创建对象,特指某一个,通过new关键字创建对象的过程我们也叫做对象实例化
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>构造函数与对象的区别</title>
    <script>
        // 1.构造函数,泛指一大类
        function Star(uname, age, sex) {
            this.name = uname;
            this.age = age;
            this.sex = sex;
            this.sing = function(song) {
                console.log(song);
            }
        }
        // 2.对象,特指一个具体事物
        var ldh = new Star('刘德华', 18, '男');//调用构造函数返回的是一个对象
        console.log(ldh.name);
        console.log(ldh['sex']);
        // 3.利用构造函数创建对象的过程也叫做对象的实例化
    </script>
</head>
<body>
    
</body>
</html>

3.new关键字

new在执行时会做四件事情

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

4.遍历对象属性

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>遍历对象</title>
    <script>
        var obj = {
            name: '菜鸟',
            age: 18,
            sex: '男',
            fn: function() {
                console.log('1111');
            }
        }
        //console.log(obj.name);
        //console.log(obj.age);
        //console.log(obj.sex);
        // for in 遍历对象
        // for (变量 in 对象) {

        // }
        
        //for in 里面的变量,习惯于写k,或者是key
        for (var k in obj) {
            console.log(k); //k 变量输出,得到的是属性名 name,age,sex
            console.log(obj[k]);//得到的是属性值菜鸟,18,男
        }
    </script>
</head>
<body>
    
</body>
</html>

在这里插入图片描述

5.小结

  1. 对象可以让结构更加清晰
  2. 对象是复杂数据类型object
  3. 本质:对象是一组无序的相关属性和方法的集合
  4. 构造函数泛指某一大类,比如苹果,苹果有很多品种,但都是叫做苹果
  5. 对象实例,特指一个事物
  6. for in 语句用于遍历对象的属性
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值