12JavaScript对象

本文介绍了JavaScript中的对象,包括对象的概念、为何需要对象,以及创建对象的三种方式:字面量、new Object和构造函数。详细阐述了属性、方法、变量和函数的区别,并探讨了new关键字的作用。此外,还讲解了如何使用for...in...循环遍历对象属性。
摘要由CSDN通过智能技术生成

1、对象

1.1 什么是对象?

  • 万物皆对象。对象是一个具体的事物,看得见摸得着的事物。例如:一本书、一辆汽车、一个人、可以是“对象”。一个数据库、一张网页、一个远程服务器的连接也可以是“对象”。

  • 对象必须是具体的事物,要特指,不能泛指。

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

  • 对象是由属性方法组成的。属性是事物的特征,在对象中用属性来表示(常用名词)。方法是事物的行为,在对象中用方法来表示(常用动词)。

1.2 为什么需要对象

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

答案:用对象。

2、创建对象的三种方式

2.1 利用字面量创建对象

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

    <script>
        // var obj = {}; //创建了一个空的对象
        var obj = {
            uname: '张三疯',
            age: 18,
            sex: '男',
            sayHi: function() {
                console.log('hi~');
            }
        }
    </script>
  • 里面的属性或者方法我们采取键值对的形式。 键(属性名):值(属性值)
  • 多个属性或者方法用逗号隔开
  • 方法后面跟的是一个匿名函数

2.1.1 使用对象

调用对象的属性:

  • 方法一:对象名.属性名
        console.log(obj.uname);
  • 方法二:对象名[‘属性名’]
        console.log(obj['age']); //返回的是属性值

调用对象的方法:

  • 对象名.方法名(千万别忘记加小括号!!!)
        obj.sayHi();

2.1.2 变量、属性、函数、方法的区别

变量和属性:都是用来存储数据的。区别:变量是单独声明并赋值的;而属性在对象里面,不需要声明,使用时必须加上对象名。

函数和方法:都是实现某种功能。区别:函数是单独声明并且调用的。方法在对象里面,调用的时候要加上对象名。

2.2 利用new Object创建对象

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

    <script>
        var obj = new Object();
        obj.uname = '张三疯';
        obj.age = 18;
        obj.sayHi = function() {
            console.log('hi~');
        }
    </script>
  • 利用等号赋值的方法添加对象的属性和方法
  • 每个属性和方法之间用分号结束

2.3 利用构造函数创建对象

因为之前的两种方式只能一次创建一个对象。如果要创建多个对象只能复制,因此可以利用函数的方法重复这些相同的代码,我们就把这个函数称为构造函数。

构造函数里面封装的是对象。构造函数就是把对象里面一些相同的属性和方法抽象出来封装到函数里面。

2.3.1 代码结构

    <script>
        function 构造函数名() {
            this.属性 =;
            this.方法 = function() {}
        }
        new 构造函数名();
    </script>
    <script>
        function Star(uname, age, sex) {
            this.name = uname;
            this.age = age;
            this.sex = sex;
            this.sing = function(sang) {
                console.log(sang);
            }
        }
        var ldh = new Star('刘德华', 18, '男'); //调用函数返回的是一个对象
        var zxy = new Star('张学友', 19, '男');
        console.log(ldh.name);
        console.log(ldh.sex);
        ldh.sing('冰雨');
    </script>
  • 构造函数名字首字母要大写
  • 我们构造函数不需要return,就可以返回结果
  • 我们调用构造函数,必须使用new
  • 我们只要new Star() 调用函数就创建一个对象。
  • 属性和方法前面必须加this

2.3.2 构造函数和对象的区别

构造函数是泛指某一大类,如明星;

对象是一个实例,是具体的,如刘德华;

利用构造函数创建对象也叫做对象实例化。

3、new关键字

  • new 当构建函数遇到new时会在内存中创建一个新的对象。
  • this 就会指向刚才创建的空对象
  • 执行构造函数里面的代码 给这个空对象添加属性和方法
  • 返回这个对象(所以构造函数里面不需要return)

4、遍历对象属性

4.1 for…in…循环

for (变量 in 对象){}
    <script>
        var obj = {
                name: '吱昂张',
                age: 18,
                sex: '女'
            }
            //遍历属性
        for (var k in obj) {
            console.log(k); //得到的是属性名 name age sex
            console.log(obj[k]); // 得到的属性值 吱昂张 18 女
        }
    </script>
  • 我们使用for in 里面的变量 我们喜欢写k 或者 key
  • console.log(obj[k]); 这里的k没有引号和使用对象时区分开
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值