当前位置: 首页 > news >正文

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. 静态成员(属性和方法)写在谁身上?

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 音视频封装demo:将h264数据和aac数据封装(mux)成FLV文件(纯手工,不依赖第三方开源库)
  • 面试题007-Java-Spring
  • 华为机试真题--字符串变换最小字符串
  • 初识STM32:寄存器编程 × 库函数编程 × 开发环境
  • ubuntu下aarch64-linux-gnu(交叉编译) gdb/gdbserver
  • 如何从数码相机恢复已删除的照片
  • Python开发—— 列表的高级操作与应用
  • spring监听事件
  • Obsidian 文档编辑器
  • R 绘图 - 饼图
  • 【ROS2】中级-编写动作服务器和客户端(Python)
  • 从零手写实现 nginx-26-rewrite url 重写
  • javafx基础知识
  • 【RAG KG】GraphRAG开源:查询聚焦摘要的图RAG方法
  • 打卡第7天-----哈希表
  • 时间复杂度分析经典问题——最大子序列和
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • Android 架构优化~MVP 架构改造
  • Elasticsearch 参考指南(升级前重新索引)
  • FastReport在线报表设计器工作原理
  • HTTP 简介
  • java2019面试题北京
  • Laravel核心解读--Facades
  • SQLServer插入数据
  • 关于 Cirru Editor 存储格式
  • 和 || 运算
  • 计算机在识别图像时“看到”了什么?
  • 记一次删除Git记录中的大文件的过程
  • 如何抓住下一波零售风口?看RPA玩转零售自动化
  • 树莓派 - 使用须知
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • 最近的计划
  • 阿里云移动端播放器高级功能介绍
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • ​埃文科技受邀出席2024 “数据要素×”生态大会​
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • #1014 : Trie树
  • (+4)2.2UML建模图
  • (4)Elastix图像配准:3D图像
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (C)一些题4
  • (二)十分简易快速 自己训练样本 opencv级联lbp分类器 车牌识别
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (一)Docker基本介绍
  • (一)UDP基本编程步骤
  • (转)h264中avc和flv数据的解析
  • (状压dp)uva 10817 Headmaster's Headache
  • .FileZilla的使用和主动模式被动模式介绍
  • .form文件_一篇文章学会文件上传
  • .JPG图片,各种压缩率下的文件尺寸
  • .NET C# 使用GDAL读取FileGDB要素类