zoukankan      html  css  js  c++  java
  • 21-对象

    对象是一组无序的相关属性和方法的集合,所有的事物都是对象,万物皆对象

    一、创建对象的三种方式

    对象的属性以键值对存在。
    对象的方法是一个函数

    1.利用对象字面量创建对象

    var obj = {
        name : '小艾同学',
        age : 23,
        sex : '女',
        flag : function(){
            alert('冲冲冲!~');
        }
    };
    

    2.通过object创建函数

    var obj = new Object();
    obj.name = '小艾同学';
    obj.age = 23;
    obj.sex : '女';
    

    3.构造函数创建对象

    1. 构造函数约定首字母大写

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

    3. 构造函数中不需要 return 返回结果

    4. 当我们创建对象的时候,必须用 new 来调用构造函数

    function 构造函数名(形参1,形参2,形参3) {
         this.属性名1 = 参数1;
         this.属性名2 = 参数2;
         this.属性名3 = 参数3;
         this.方法名 = 函数体;
    }
    //调用
    var obj = new 构造函数名(实参1,实参2,实参3)
    
      <script>
        function Person(uName, uSex, uScore) {
          this.name = uName;
          this.sex = uSex;
          this.score = uScore;
          this.do = function (x) {
            console.log(x);
          }
        }
    
        let my = new Person('小艾', '女', '100');
        let he = new Person('小柴', '男', '1000');
        console.log(my);
        console.log(he);
        my.do('敲代码')
        he.do('教我敲代码')
        console.log(my.name);
        console.log(he.name);
      </script>
    

    new

    1. 在构造函数代码开始执行之前,创建一个空对象;(new和构造函数生了个孩子)
    2. 修改this的指向,把this指向创建出来的空对象;(this指向生的孩子)
    3. 给空对象添加属性和方法;(给孩子传递知识供他成长)
    4. 在函数完成之后,返回this---即创建出来的对象(孩子长大了,就回报父母)

    二、对象中的增删改查

      • 对象名.属性名 = 值
      • 属性名要是一个原对象里没有的属性
      • delete 对象.属性名
      • 对象名.属性名 = 新值
      • 对象名.属性名
    • 上述方法中,能用点语法的就能用中括号语法
      • .语法不能解析变量
      • []可以
    • 对象名['属性名'] = 属性值;
      • 属性名一定要加引号,不然会被当成变量去解析
        var obj = {
          name: '小艾同学',
          age: 23,
          sex: '女'
        };
    
        var sex = 'age';
        console.log(obj.sex); // 女 => 不会解析变量 直接去找 sex这个属性
        console.log(obj['sex']); // 女 => 不会解析变量 直接去找 sex这个属性
        console.log(obj[sex]); // 23 => 会将sex当做变量去解析 会获取sex里面的age
    

    三、遍历对象

      <script>
        function My(name, age, sex) {
          this.name = name;
          this.age = age;
          this.sex = sex;
        }
    
        var a = new My('小艾同学', 23, '女');
    
        for (var k in a) {
          console.log(k, a[k]);
          console.log(`键名:${k},键值:${a[k]}`)
        }
      </script>
    

    四、复杂类型的复制操作

    复制的是地址值,一变都变

        function Person(name, age) {
          this.name = name;
          this.age = age;
        }
    
        // 通过new得到的对象都是一个新对象
        var p1 = new Person('zs', 18);
        var p2 = new Person('zs', 18);
    
        p1.name = 'ls';
        console.log(p2.name); // zs
        p2 = p1;
        console.log(p2.name); // ls
    
        function Person(name, age) {
          this.name = name;
          this.age = age;
        }
    
        function f1(p) {
          p.name = 'ls';
          console.log(p.name); // ls
        }
    
        var p1 = new Person('zs', 18);
    
        console.log(p1.name); // zs
        f1(p1);
        console.log(p1.name); // ls
    

    五、对象的传参

  • 相关阅读:
    以友盟+U-Push为例,深度解读消息推送的筛选架构解决方案应用与实践
    [Python图像处理] 三十三.图像各种特效处理及原理万字详解(毛玻璃、浮雕、素描、怀旧、流年、滤镜等)
    走进PEP8——代码规范
    2020全球C++及系统软件技术大会成功落下帷幕
    逆向工程,调试Hello World !程序(更新中)
    520了,用32做个简单的小程序
    细数那些年我用过的前端开发工具
    细数那些年我用过的前端开发工具
    前端几个常用简单的开发手册拿走不谢
    前端几个常用简单的开发手册拿走不谢
  • 原文地址:https://www.cnblogs.com/xiaoaitongxue/p/12796851.html
Copyright © 2011-2022 走看看