首页 > 其他分享 >07-自定义对象

07-自定义对象

时间:2023-01-07 22:45:04浏览次数:51  
标签:console 07 自定义 对象 age obj 构造函数 log

自定义对象基本概念

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

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

为什么需要对象

​ 保存一个值时,可以使用变量,保存多个值(一组值)时, 可以使用数组。如果要保存一个人的完整信息则使用对象

利用对象字面量创建对象

  • 利用对象字面量创建对象{}
    • 里面的属性或者方法采取的是键值对的形式 键 属性名:值 属性
    • 多个属性或者方法中间用逗号隔开
    • 方法冒号后面跟的是一个匿名函数
  • 使用对象
    • 调用对象的属性,对象名.属性名
    • 调用对象的属性,对象名['属性名']
    • 调用对象的属性,对象名.方法名() 千万不要忘记添加小括号
<script>
      // var obj{}  创建了一个空的对象
      var obj = {
        name: "陈一",
        age: 18,
        sex: "男",
        sayHi: function () {
          console.log("hello");
        },
      };
    
      console.log(obj.name);
      console.log(obj["sex"]);
      obj.sayHi();
    </script>

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

  1. 变量和属性是相同的,都是用来存储数据的。 变量单独声明并赋值,使用的时候直接写变量名,单独存在
  2. 属性 在对象里面的不需要声明的,使用的时候必须是 对象.属性
  3. 函数和方法的相同点 都是实现某种功能,做某件事。函数是单独声明,并且调用的 函数名()单独存在的
  4. 方法 在对象里面 调用的时候 对象.方法
  <script>
      var num = 10;
      var obj = {
        age: 19,
        fn: function () {},
      };

      function fn() {}
      console.log(obj.age);
      //console.log(age); 报错
    </script>

利用new Object创建对象

  1. 利用等号赋值的方法,添加对象的属性和方法
  2. 每个属性和方法之间用 分号结束
 <script>
      var obj = new Object(); //创建了一个空的对象
      obj.uname = "陈一";
      obj.age = 18;
      obj.sex = "男";
      obj.sayHi = function () {
        console.log("hi~");
      };

      console.log(obj.uname);
      console.log(obj["age"]);
      obj.sayHi();
 </script>

为什么需要构造函数

  1. 为什么需要构造函数? 因为前面两种创建对象的方式一次只能创建一个对象
  2. 因为我们一次创建一个对象,里面很多的属性和方法是大量相同的我们只能复制
  3. 因此我们可以利用函数的方法重复这些相同的代码,我们就把这个函数称为构造函数
  4. 又因为这个函数不一样,里面封装的不是普通代码,而是对象
  5. 构造函数就是把我们对象里面一些相同的属性和方法抽象出来封装到函数里面
 <script>
      var ldh = {
        uname: "刘德华",
        age: 55,
        hobby: function () {
          console.log("唱歌");
        },
      };
      var zxy = {
        uname: "张学友",
        age: 50,
        hobby: function () {
          console.log("跳舞");
        },
      };
 </script>

利用构造函数创造对象

  1. 构造函数首字母必须大写

  2. 构造函数不需要使用return 就可以返回结果

  3. 调用构造函数,必须使用 new

  4. 只要new Star() 调用函数就创建一个对象 ldh {}

  5. 属性或者方法前面必须添加 this

    构造函数的语法格式:
         function 构造函数名() {
               this.属性 = 值;
               this.方法 = function () {};
             }
             new 构造函数名();
          new 构造函数名
    
    <script>
          function Star(name, age, sex) {
            this.name = name;
            this.age = age;
            this.sex = sex;
            this.sing = function (sang) {
              console.log(sang);
            };
          }
          var ldh = new Star("刘德华", 18, "男"); //调用函数返回的是一个对象
          //   console.log(typeof ldh);
          console.log(ldh.name);
          console.log(ldh["age"]);
          ldh.sing("冰雨");
          console.log("---------------");
          var zxy = new Star("张学友", 19, "男");
          console.log(zxy.name);
          console.log(zxy.age);
          zxy.sing("李香兰");
      </script>
    

构造函数和对象的区别

  1. 构造函数 明星 泛指的某一大类 它类似于 java 语言里面的 类(class)

  2. 对象 特指 是一个具体的事物 刘德华 == {name: "刘德华", age: 18, sex: "男", sing: ƒ}

  3. 我们利用构造函数创建对象的过程我们也称为对象的实例化

<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, "男"); // 调用函数返回的是一个对象
      console.log(ldh);
</script>

new关键字执行过程

  1. new 构造函数可以在内存中创建了一个空的对象
  2. this 就会指向刚才创建的空对象
  3. 执行构造函数里面的代码 给这个空对象添加属性和方法
  4. 返回这个对象
  <script>
      function Star(uname, age, sex) {
        this.name = uname;
        this.age = age;
        this.sex = sex;
        this.sing = function (sang) {
          console.log(123);
        };
      }
      var ldh = new Star("刘德华", 18, "男");
      console.log(ldh);
  </script>

遍历对象

for in 遍历对象

for (变量 in 对象) {

}

 <script>
      var obj = {
        name: "pink",
        age: 18,
        sex: "男",
        fn: function () {},
      };
      //   console.log(obj.name);
      //   console.log(obj.age);
      //   console.log(obj.sex);

      for (var k in obj) {
        // console.log(k); //k变量 得到的是 属性名
        console.log(obj[k]); //得到的是 属性值
      }
 </script>

标签:console,07,自定义,对象,age,obj,构造函数,log
From: https://www.cnblogs.com/jokerwen/p/17033759.html

相关文章

  • spring boot——Mybatis中的多表查询之用户与账户(一对多和一对一/多对一)---结果集封装
    Mybatis中的多表查询之用户与账户(一对多和一对一/多对一)---结果集封装到对象---立即加载与延迟加载Mybatis表之间关系有三种:1、 一对一:人和身份证号是一对一2、 一......
  • 230107_50_RPC底层原理
    Stub已经实现:可以任意新增接口和方法都可以通过这个stub代理出一个对应的对象。新增一个IProductService接口和方法;如下:IProductService接口packagecom.bill.rpc.......
  • .net core Kestrel宿主服务器自定义监听端口配置
    .netcoreKestrel宿主服务器自定义监听端口配置http://t.zoukankan.com/williamwsj-p-9645095.html.netcoreKestrel宿主服务器自定义监听端口配置在.netcore的w......
  • asp.net core部署时自定义监听端口,提高部署的灵活性
    asp.netcore部署时自定义监听端口,提高部署的灵活性原文连接:http://www.manongjc.com/detail/51-deiojnabsarikgh.html用的是命令参数的方式,简单写的,代码很low,不喜勿喷!......
  • JavaScript学习笔记—原型对象prototype
      创建的每个函数,解析器都会向函数中添加一个属性prototype,这个属性对应着一个对象就是我们所谓的原型对象。  函数作为普通函数调用prototype没有任何作用  当函......
  • 安卓应用漏洞学习-Content Provider组件的自定义权限
    前期回顾漏洞免费实战部分-安卓应用层getLastPathSegment函数问题漏洞实战部分2-安卓应用ZipEntry对象问题实战漏洞实战部分3-ContentProvider组件的openFile接口问题......
  • JavaScript学习笔记—对象的方法
    对象的属性值可以是任何的数据类型,也可以是个函数如果函数作为对象的属性保存,那这个函数是这个对象的方法,调用函数就是调用对象的方法varobj=newObject();//向对象......
  • JavaScript学习笔记—创建对象
    (1)new方式创建对象varobj=newObject();obj.name="孙悟空";obj.age=18;obj.sayName=function(){console.log("我是孙悟空");};(2)对象字面量创建对象可以......
  • 读C#代码整洁之道笔记07_代码评审和集成测试
    1. 代码评审注意事项1.1. 始终保持代码评审的意识1.2. 保证代码构建成功1.3. 确保所有的测试都是通过的1.4. 注意YAGNI原则1.5. 检查重复代码1.6. 使用静态......
  • CF1007A 题解
    题目传送门题目分析贪心水题。首先将原数组从小往大排序,然后不难想到一个简单但会超时的思路,即对每个位置,向后找到一个比自己大的数进行搭配。然后是一个简单的小优化,......