# 对象

现实生活中: 万物皆对象,对象时一个具体的事物,看的见摸得着、

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>

# 小结

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