JS进阶-深入对象

学习目标:

  • 掌握深入对象

学习内容:

  1. 创建对象三种方式
  2. 构造函数
  3. 实例成员&静态成员

创建对象三种方式:

  • 利用对象字面量创建对象
 const o = {name: '佩奇'}
  • 利用new Object创建对象
 const obj = new Object({ uname: '雪碧宝宝' })console.log(obj)
  • 利用构造函数创建对象
 <title>自己定义构造函数创建对象</title>
</head><body><script>//创建一个猪 构造函数function Pig(uname, age) {this.uname = unamethis.age = age}// console.log(new Pig('佩奇', 6))// console.log(new Pig('乔治', 3))const p = new Pig('佩奇', 6)console.log(p)// const pepa = { uname: '佩奇', age: 6 }// const obj = new Object()</script></body>

构造函数:

构造函数:是一种特殊的函数,主要用来初始化对象。

使用场景:常规的{...}语法允许创建一个对象。比如我们创建了佩奇的对象,继续创建乔治的对象还需要重新写一遍,此时通过构造函数快速创建多个类似的对象

 //创建一个猪 构造函数function Pig(uname, age) {this.uname = unamethis.age = age}// console.log(new Pig('佩奇', 6))// console.log(new Pig('乔治', 3))const p = new Pig('佩奇', 6)const Georage = new Pig('乔治', 3)console.log(p)

注意
构造函数在技术上是常规函数。

不过有两个约定:

  1. 它们对的命名以大写字母开头。
  2. 它们只能由new操作符来执行。

说明
3. 使用new关键字调用函数的行为被称为实例化
4. 实例化构造函数时没有参数时可以省略( )
5. 构造函数内部无需写return,返回值即为新创建的对象。
6. 构造函数内部的return返回的值无效,所以不要写return
7. new Object( )new Date( )也是实例化构造函数。

  • 小结:
  1. 构造函数的作用是什么?怎么写呢?

构造函数是来快速创建多个类似的对象
大写字母开头的函数。

  1. new关键字调用函数的行为被称为?

实例化。

  1. 构造函数内部需要写return吗,返回值是什么?

不需要。
构造函数自动返回创建的新的对象。

  • 练习:
 <title>练习-利用构造函数创建多个对象</title>
</head><body><script>function Goods(name, price, count) {this.name = namethis.price = pricethis.count = count}const mi = new Goods('小米', 1999, 20)console.log(mi)const hw = new Goods('华为', 3999, 59)console.log(hw)const vv = new Goods('vivo', 1888, 100)console.log(vv)// const date = new Date('2024-7-9')// console.log(data)</script></body>
  • 实例化执行过程

说明:

  1. 创建新对象。
  2. 构造函数this指向新对象。
  3. 执行构造函数代码,修改this,添加新的属性。
  4. 返回新对象。
 //创建一个猪 构造函数function Pig(uname, age) {this.uname = unamethis.age = age}// console.log(new Pig('佩奇', 6))// console.log(new Pig('乔治', 3))const p = new Pig('佩奇', 6)const Georage = new Pig('乔治', 3)console.log(p)

实例成员&静态成员:

  • 实例成员

通过构造函数创建的对象称为实例对象,实例对象中的属性和方法称为实例成员

说明:

  1. 实例对象的属性和方法即为实例成员。
  2. 为构造函数传入参数,动态创建结构相同但值不同的对象。
  3. 构造函数创建的实例对象彼此独立互不影响。
//实例成员和静态成员//1.实例成员:实例对象上的属性和方法属于实例成员function Pig(name) {this.name = name}const peiqi = new Pig('佩奇')const qiaozhi = new Pig('乔治')//构造函数创建的实例对象彼此独立互不影响peiqi.name = '小猪佩奇' //实例属性peiqi.sayHi = () => {   //实例方法console.log('hi~')}console.log(peiqi)console.log(qiaozhi)//为构造函数传入参数,动态创建结构相同但值不同的对象console.log(peiqi === qiaozhi) //false  
  • 静态成员

构造函数的属性和方法被称为静态成员(静态属性和静态方法)。

说明:

  1. 静态成员只能构造函数来访问。
  2. 静态方法中的this指向构造函数。

比如Date.now( )Math.PIMath.random( )

 //2.静态成员:构造函数上的属性和方法称为静态成员function Pig(name) {this.name = name}Pig.eyes = 2 //静态属性Pig.sayHi = function () { //静态方法console.log(this)}Pig.sayHi()console.log(Pig.eyes) //2
  • 小结:
  1. 实例成员(属性和方法)写在谁身上?

实例对象的属性和方法即为实例成员。
实例对象相互独立实例成员当前实例对象使用。

  1. 静态成员(属性和方法)写在谁身上?

构造函数的属性和方法被称为静态成员。
静态成员只能构造函数访问。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/44049.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OJhelper一款帮助你获取各大oj信息的软件

项目地址 应用功能 目前应用支持&#xff1a;查询、自定义、收藏各大oj比赛信息&#xff0c;跳转比赛界面。查询各大oj的Rating分以及题量&#xff0c;查看题量饼状图。 应用环境 windows和安卓端 应用预览&#xff1a; 维护概况 后期会提供持续更新&#xff0c;具体可以…

7.9数据结构

思维导图 作业 doubleloop.h #ifndef __DOUBLELOOP_H__ #define __DOUBLELOOP_H__#include <stdio.h> #include <stdlib.h>typedef int datatype; typedef struct node {union{int len;datatype data;};struct node *pri;//前驱指针struct node *next;//后继指针…

全终端自动化测试框架wyTest

突然有一些觉悟&#xff0c;程序猿不能只会吭哧吭哧的低头做事&#xff0c;应该学会怎么去展示自己&#xff0c;怎么去宣传自己&#xff0c;怎么把自己想做的事表述清楚。 于是&#xff0c;这两天一直在整理自己的作品&#xff0c;也为接下来的找工作多做点准备。接下来…

Linux | 安装lb-toolkits 1.2.4库

Linux | 安装 lb-toolkits 最近又需要下载葵花的数据&#xff0c;之前分享过一次代码。今天发现之前的环境不小心被我删了&#xff0c;而运行相关的代码需要安装lb-toolkits这个库&#xff0c;今天正好记录了一下安装lb-toolkits的过程。 这里安装的版本是1.2.4&#xff0c;别…

windows USB 设备驱动开发-发送MDL和错误恢复

USB 驱动程序可以在堆栈中使用链接式 MDL 功能发送数据&#xff0c;并且USB驱动的客户端可以将传输缓冲区作为 MDL 结构链发送。 大多数 USB 主机控制器要求传输缓冲区几乎是连续的。 几乎连续意味着缓冲区可以开始和结束页中的任意位置&#xff0c;但缓冲区的其余部分必须在页…

53-4 内网代理6 - frp搭建三层代理

前提:53-3 内网代理5 - frp搭建二级代理-CSDN博客 三级网络代理 在办公区入侵后,发现需要进一步渗透核心区网络(192.168.60.0/24),并登录域控制器的远程桌面。使用FRP在EDMZ区、办公区与核心区之间建立三级网络的SOCKS5代理,以便访问核心区的域控制器。 VPS上的FRP服…

海豚调度器(DolphinScheduler)修改时区为东八区

海豚调度器设置了定时&#xff0c;执行的时间和设置时间不同&#xff0c;后来排查发现是时区问题。可以用下面方法和步骤来修改&#xff1a; 修改DolphinScheduler服务器时区 登录服务器&#xff1a;首先&#xff0c;通过SSH或其他方式登录到运行DolphinScheduler服务的服务器…

压缩感知3——重构算法正交匹配追踪算法

算法流程 问题的实质是&#xff1a;AX Y 求解&#xff08;A是M维&#xff0c;Y是N维且N>>M并且稀疏度K<M&#xff09;明显X有无穷多解&#xff0c;重构过程是M次采样得到的采样值升维的过程。OMP算法的具体步骤&#xff1a;(1)用X表示信号&#xff0c;初始化残差e0 …

计算给定数字的阶乘

1 问题 计算给定数字的阶乘. 2 方法 使用while循环。使用for循环。使用函数。 通过实验、实践等证明提出的方法是有效的&#xff0c;是能够解决开头提出的问题。 代码清单 1 使用while循环numberint(input(请输入一个数字:))factorial1i1while i<number: factorialfactor…

【论文速读】| JADE:用于大语言模型的基于语言学的安全评估平台

本次分享论文&#xff1a;JADE : A Linguistics-based Safety Evaluation Platform for Large Language Models 基本信息 原文作者&#xff1a;Mi Zhang, Xudong Pan, Min Yang 作者单位&#xff1a;Whitzard-AI, System Software and Security Lab Fudan University 关键…

AWS Glue 与 Amazon Redshift 的安全通信配置

1. 引言 在 AWS 环境中,确保服务间的安全通信至关重要。本文将探讨 AWS Glue 与 Amazon Redshift 之间的安全通信配置,特别是为什么需要特定的安全组设置,以及如何正确实施这些配置。 2. 背景 AWS Glue:全托管的 ETL(提取、转换、加载)服务Amazon Redshift:快速、完全…

嵌入式底层开发 入门学习路线

入门嵌入式底层开发的学习路线可以分为几个关键阶段&#xff0c;下面是一个较为系统的学习路径&#xff0c;它涵盖了从基础知识到实际项目应用的全过程。 1. 基础知识 计算机科学基础&#xff1a;理解数据结构、算法、操作系统等基本概念。电子和电路理论&#xff1a;学习数字…

『大模型笔记』GraphRAG:用于复杂数据发现的新工具现已在GitHub上发布

GraphRAG:用于复杂数据发现的新工具现已在GitHub上发布 文章目录 一. GraphRAG:用于复杂数据发现的新工具现已在GitHub上发布1. 评估和结果2. 研究见解和未来方向二. 参考文献一. GraphRAG:用于复杂数据发现的新工具现已在GitHub上发布 下载 GraphRAG今年早些时候,我们介绍…

倒计时 2 周!CommunityOverCode Asia 2024 IoT Community 专题部分

CommunityOverCode 是 Apache 软件基金会&#xff08;ASF&#xff09;的官方全球系列大会&#xff0c;其前身为 ApacheCon。自 1998 年以来&#xff0c;在 ASF 成立之前&#xff0c;ApacheCon 已经吸引了各个层次的参与者&#xff0c;在 300 多个 Apache 项目及其不同的社区中探…

【Unix】SunOS/Oracle Solaris系统介绍

一.SunOS系统介绍 SunOS 是由 Sun Microsystems 开发的 Unix 操作系统。它最初是为 Sun 的 SPARC 架构计算机设计的&#xff0c;后来也支持了 Intel x86 架构。SunOS 是基于 UNIX System V 4.1 版本&#xff0c;并且随着时间的发展&#xff0c;SunOS 经历了多个版本迭代&#…

百度文心4.0 Turbo开放,领跑国内AI大模型赛道!

百度文心4.0 Turbo开放&#xff0c;领跑国内AI大模型赛道&#xff01; 前言 文心一言大模型 就在7月5日&#xff0c;在2024世界人工智能大会 (WAIC) 上&#xff0c;百度副总裁谢广军宣布文心大模型4.0 Turbo正式向企业客户全面开放&#xff01;这一举动直接引发了业界的关注。那…

springboot中@bean注解的创建和使用

bean的创建顺序 在Spring Boot中&#xff0c;当一个配置类&#xff08;使用Configuration注解的类&#xff09;中定义了多个bean时&#xff0c;这些bean的创建顺序并不完全由它们在类中的声明顺序决定。Spring框架在创建和管理bean时&#xff0c;遵循了复杂的依赖注入和生命周…

qt connect 函数详解

在 Qt 框架中&#xff0c;connect 函数是一个非常重要的机制&#xff0c;用于在信号&#xff08;signal&#xff09;和槽&#xff08;slot&#xff09;之间建立连接。信号和槽是 Qt 中用于对象间通信的一种机制。当某个特定事件发生时&#xff0c;一个对象可以发射&#xff08;…

短链接day3

短链接分组模块 新增短链接分组 在新增之前&#xff0c;需要判断gid是否是唯一的。 //检查gid是否已存在&#xff0c;保证gid唯一public boolean hasGid(String gid){LambdaQueryWrapper<GroupDO> queryWrapper Wrappers.lambdaQuery(GroupDO.class).eq(GroupDO::getG…

在Windows中使用开源高性能编辑器Zed(持续更新)

简介 “Zed is a high-performance, multiplayer code editor from the creators of Atom and Tree-sitter. It’s also open source.” “Zed是一款高性能的支持多人协作的代码编辑器&#xff0c;由Atom和Tree-sitter的创建者开发。它也是开源的。” Zed主打“高性能”&…