day24-JS进阶(构造函数,new实例化,原型对象,对象原型,原型继承,原型链)

news2024/11/27 15:49:45

目录

构造函数

深入对象

创建对象三种方式

构造函数

new实例化执行过程(important!)

实例成员&静态成员

实例对象&实例成员

静态成员

内置构造函数

基本包装类型

Object

Object.keys(obj)返回所有键组成的字符串数组

Object.values(obj)返回所有值组成的字符串数组

Object.assign(obj1,obj2)返回合并的对象

Array

数组常见核心实例方法

arr.forEach()

arr.filter()

arr.map()

arr.reduce(function(){}[, ])

数组常见其他实例方法

array.from(lis) 将伪数组转换为真数组

String

常见实例方法

Number

toFixed()四舍五入创建保留几位小数

关于小数的精度问题

编程思想

面向过程

面向对象

特性:

封装性

继承性

多态性

原型

原型

constructor属性

指向:

使用场景:

对象原型

作用:

原型继承

原型链

机制:

instanceof:


构造函数

深入对象

创建对象三种方式

其中之一是利用构造函数创建对象,因此构造函数主要作用→初始化对象。

构造函数

构造函数,主要作用就是用来创建对象的。

对于对象共同的属性(属性值可不同)和方法,则将其放入构造函数中创建。

构造函数一定不要忘记this,指向当前的实例对象,也就是说 谁new我了就指向谁。

new实例化执行过程(important!)

new会改变this的指向。

实例成员&静态成员
实例对象&实例成员

通过构造函数创建的对象→实例对象;

        实例对象结构相同但地址值不同,彼此独立且互不影响。

实例对象中的属性和方法→实例成员。

静态成员

内置构造函数

基本包装类型

        基本数据类型也有专门的构造函数。

Object
Object.keys(obj)返回所有键组成的字符串数组

        ()内部的参数,参数是谁就将对象丢进去.

Object.values(obj)返回所有值组成的字符串数组
Object.assign(obj1,obj2)返回合并的对象
Array
数组常见核心实例方法
arr.forEach()
arr.filter()
arr.map()

arr.reduce(function(){}[, ])

一般使用:

arr.reduce((prev,current) => prev+current,0)

数组常见其他实例方法

MDN看用法

array.from(lis) 将伪数组转换为真数组
String
常见实例方法

        将数组转化为字符串用的数组方法是join(‘分隔符’)

                这里的分隔符是指用什么符号来将字符串分隔

        将字符串转化为数组用的字符串方法是split(‘分隔符’)

                这里的分隔符是指按照字符串中已有的什么符号进行分隔

Number
toFixed()四舍五入创建保留几位小数

关于小数的精度问题

编程思想

面向过程

        步骤/过程划分

面向对象

        功能划分

特性:

封装性

js中通过构造函数来实现封装性,即共同的属性可以封装到构造函数中,若有共同的方法,则若也直接封装到构造函数中,则在多个实例化调用同一方法时则会造成内存的浪费。

→ 需要将方法放至构造函数的原型中

继承性
多态性

原型

原型

能够利用原型对象实现方法共享。

公共的属性写到构造函数上,公共的方法写到原型对象上。

构造函数和原型对象中的this都指向实例化对象。

constructor属性

指向:

constructor属性是构造函数的原型对象中的属性。

每个原型对象都有constructor属性。指向该原型对象的构造函数。

使用场景:

其指回来有何作用呢?有什么使用场景呢?

对象原型

作用:

        即实例对象与原型对象产生什么样的联系?

实例对象之所以能访问原型对象中的属性和方法 正是因有对象原型。

实例对象中的对象原型指向构造函数的原型对象

也正因其指向原型对象,因此对象原型__proto__中的constructor属性与原型对象的指向同,都是指向构造函数

__proto__是只读属性

原型继承

        若两个有共同属性/方法的构造函数想要继承共同属性/方法,若将共同属性和方法直接放至对象中会产生如下问题。

若在Woman.prototype上添加新方法,则也会相应地添加了Man.prototype中的方法。

因为上述赋值对象操作是赋值了对象的地址,更改其一就会使对象发生变化。

 

        因此构造函数想要原型继承,不可以直接将共同属性/方法放至一个固定对象中,否则将会产生上述问题,解决方案是→将共同属性和方法放至一个构造函数中,则每次new出来的对象地址不一样赋给Woman.prototype和Man.prototype中的地址也就不一样,因此修改任一个都不会对彼此产生影响。

原型链

机制:

原型链是面试的高频题。

        只要是对象都有对象原型。

        只要是原型对象都有constructor属性。

作用域链→变量的查找规则;原型链→也是一个查找规则。


最底下那条链是基于对象原型直接指向构造函数的原型对象,此外的链都是基于原型对象的继承。

基于原型对象的继承使得不同构造函数的原型对象关联在一起!

instanceof:

万物皆对象

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

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

相关文章

C# 替换字符串最后一个逗号为分号

使用场景,sql语句的insert into table(c1,c2,c3) values (v1,v2,v3),(v1,v2,v3),(v1,v2,v3), 为了提高执行效率,在一个insert into中执行时,在循环中拼接语句,最后一个逗号需要替换为分号才能执行。 public static string Replace…

采集软件在市场营销中的应用价值

随着互联网的发展,市场竞争愈发激烈,如何获取准确、全面的市场信息成为企业成功的关键。数据利器作为一款强大的市场营销助手软件,具备多项功能,帮助您实现精准营销,发现商机。 软件功能: 搜索引擎采集&…

docker:修改容器的共享内存大小

错误提示: RuntimeError: DataLoader worker (pid 83709) is killed by signal: Bus error. It is possible that dataloader’s workers are out of shared memory. Please try to raise your shared memory limit. 解决办法: 1:创建新容器…

docker虚拟网桥和业务网段冲突处理

ifconfig查看docker虚拟网桥ip地址 docker inspect --format{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}} $(docker ps -aq)查询所有容器的ip 修改docker-compose networks networks xxx-network: driver: bridge ipam: c…

web应用常见的其他漏洞总结

1.暴力破解用户名和密码 admin:admin, test:test, weblogic:weblogic, root:passwd 2. 扫敏感目录及备份文件 以ation 为扩展名的文件,通过7kb和k8,破壳扫描,扫描出来一个Web.rar文件,可获取MSSQL SSA连接用户名密码,通过测试…

2.6 宽带接入技术

思维导图: 前言: 我的理解: 1. **早期互联网接入技术的局限性**: - 作者首先回顾了早期用户通过电话线和调制解调器连接到互联网服务提供商(ISP)的方式,指出这种方式的速度上限是56 kbit/…

顺序表的简单介绍

目录 前提须知: 数据结构: 什么是数据结构? 数据结构特点: 为什么需要数据结构: 顺序表: 线性表: 与数组区别: 静态顺序表与动态顺序表: 二者之间的区别&#x…

应用安全系列之四十:登录常见问题以及预防方法

对于所有系统而言,登录是一个必备的而且最重要的功能。随着系统越来越复杂,服务越来越多,为了方便用户使用系统的服务,SSO应运而生,SSO虽然方便了用户使用系统,也增加了风险。因为一旦登录出现问题,就很容易通过登录访问整个系统。可见,对于登录如果没有控制好,攻击者…

HALCON的基础运用案例:- 例1- 3D点云的分割

前言: 在这个例子里面展示了用HALCON的操作函数segment_object_model_3d,来把一个输入的2.5D的3D图像进行分割。这里因为图像是一组圆柱体,有运用了一个物体的判别操作函数:dev_display_fitting_results。然后,自动给…

Python 代码调试

from pdb import set_trace as stx 是一个Python代码中常用的调试技巧之一,它用于在代码中插入断点以进行调试。这行代码的作用是将Python标准库中的 pdb(Python Debugger)模块中的 set_trace 函数导入,并将其重命名为 stx&#x…

ArcMap:第二届全国大学生GIS技能大赛(广西师范学院)详解-上午题

目录 01 题目 1.1 第一小题 1.2 第二小题 1.3 第三小题 1.4 数据展示 02 思路和实操 2.1 第一问思路 2.2 第一问操作过程 2.2.1 地理配准 2.2.2 镶嵌 2.2.2.1 第一种镶嵌方法 2.2.2.2 第二种镶嵌方法 2.2.3 裁剪 2.2.4 DEM信息提取 2.2.5 分类 2.3 第二问思路 …

DependsOn注解失效问题排查

文章目录 前言一、现象描述1.1.背景描述1.2.第一次修改,使用DependsOn注解1.3.第二次修改,设置方法入参 二、看看源码2.1.Spring实例化的源码2.2.调试2.3.验证 总结 前言 最近几天遇到一个比较有意思的问题,发现Spring的DependsOn注解失效&a…

强化学习框环境 - robogym - 学习 - 4

强化学习环境 - robogym - 学习 - 4 文章目录 强化学习环境 - robogym - 学习 - 4项目地址为什么选择 robogym如何消去目标位置的阴影?如何让物体颜色变得正确? 项目地址 https://github.com/openai/robogym 为什么选择 robogym 自己的项目需要做一些机…

小白自学笔记—网络安全(黑客笔记)

1.网络安全是什么 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 2.网络安全市场 一、是市场需求量高; 二、则是发展相对成熟入…

29 WEB漏洞-CSRF及SSRF漏洞案例讲解

目录 CSRF漏洞解释,原理等CSRF漏洞检测,案例,防御等防御方案2、设置随机Token3、检验referer来源 SSRF漏洞会比csrf漏洞重要一些SSRF_PHP,JAVA漏洞代码协议运用演示案例:SSRF_漏洞代码结合某漏洞利用测试 如何查找ssrf漏洞 SSRF漏…

测量温度的优选模块:新型设备M-THERMO3 16

| 具有16个自由选择通道的新型温度测量设备M-THERMO3 16 IPETRONIK推出的温度测量设备——M-THERMO3 16作为新一代设备的首个模块,它为模块化测量技术确立了标准。该模块具有16个通道,各通道不仅分辨率高达24位ADC,而且能够自由选择热电偶类…

2023Q3数据安全政策、法规、标准及报告汇总(附下载)

数据安全处罚事件逐年升高,2023年呈爆发式增长。 截至2023年8月31日,南都大数据研究院通过各地行政执法公示平台、媒体报道等公开渠道收集到146起依据《数据安全法》作出行政处罚决定的案例。2021年公示5起,2022年公示11起,2023年…

如何通过设备维护管理系统实现全员生产维护TPM

前面我们介绍了《什么是全员生产维护TPM?》,接下来我们探讨如何结合PreMaint的设备维护管理系统来实现全员生产维护TPM。 在现代制造业中,设备的可靠性和生产效率对企业的竞争力至关重要。为了实现全员生产维护(Total Productive …

记录vue开发实例

封装的表格组件 <template><div><div style"width: 100%" v-if"showList"><el-table v-loading.lock"loading" :data"dataList":header-cell-style"{background: #F2FCFE,fontSize: 14px,color: #50606D}&…

8.2 JUC - 6.CyclicBarrier

目录 一、是什么&#xff1f;二、使用demo三、注意 一、是什么&#xff1f; CyclicBarrier &#xff1a; 循环栅栏&#xff0c;用来进行线程协作&#xff0c;等待线程满足某个计数。构造时设置计数个数&#xff0c;每个线程执行到某个需要“同步”的时刻调用 await() 方法进行…