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

学习:JS进阶[10]内置构造函数

一.内置构造函数

1.基本包装类型

把基本数据类型包装成了复杂数据类型

a.

引用类型:Object,Array,RegExp,Date等

包装类型:String,Number,Boolean等

2.Object

a.三个常用静态方法(静态方法就是只有构造函数Object可以调用)

作用:Object.keys静态方法中获取对象中所有属性键

b.语法:获得所有的属性值

const o={uname:'嘿嘿',age:18}
Object.keys(o)
//返回的值是一个数组['uname','age']

c.获取所有的值

Object.values(o)
//返回的是一个数组['嘿嘿',18]

d.对象拷贝

//对象拷贝
const obj={}
Object.assign(obj,o)//将o对象拷贝到obj对象
Object.assign(o,{gender:'女'})
  • 作用:Object.assign静态方法常用于拷贝对象
  • 使用:经常使用的场景给对象添加属性

3.Array

方法作用说明
forEach遍历数组不返回数组,经常用于查找遍历数组元素
filter过滤数组返回新数组,返回的事筛选满足条件的数组元素
map迭代数组返回新数组,返回的是处理之后的数组元素,需要使用返回的新数组
reduce累计器返回leiji处理的结果,经常用于求和等

a.作用:reduce 返回累计处理的结果,经常用于求和等

b.基本语法:

arr.reduce(function(){},起始值)arr.reduce(function(上一次值,当前值){},初始值)const arr=[1,2,3,4]

例子:

 const arr = [1, 2, 3]// 1.没有初始值const total = arr.reduce(function (prev, current) {return prev + current})console.log(total)//6//2.有初始值const total = arr.reduce(function (prev, current) {return prev + current}, 10)console.log(total)//16//3.箭头函数写法const total = arr.reduce((prev, current) => prev + current, 10)console.log(total)//16

c.执行过程

  1. 没有初始值,则上一次值以数组的第一个数组元素的值
  2. 每一次循环,把返回值给值给做为下一次循环的上一次值
  3. 有起始值,则起始值为上一次值

d.其他方法

前三个了解,后面的自查

e.伪数组转换为真数组

静态方法Array.from()

4.String

a.split把字符串转换为数组

const str='嘿嘿,哈哈'
const arr=str.split(',')

b.字符串的截取 substring(开始的索引号[,结束的索引号])

const str='今天开始我要自己上厕所'
//如果省略了结束的索引号,默认取到最后
str.substring(4)//输出:我要自己上厕所

结束的索引号不包含在内

开始的索引号包含在内

c.其他方法

方法说明返回值
length用来获取字符串的长度数值
split('分隔符')用来将字符串拆分成数组数组
substring(首索引[,末索引])用于截取字符串字符串
startsWith(检测字符串[,检测位置索引号])检测是都以某字符开头布尔类型
includes(搜索的字符串[,检测位置索引号])判断一个字符串是否包含另一个字符串布尔类型
tpUpperCase将字母转换成大写

字符串

toLowerCase用于将就转换成小写字符串
indexOf检测是否包含某字符返回下标
endsWith检测是否以某字符结尾布尔类型
replace用于替换字符串,支持正则匹配字符串
match用于查找字符串,支持正则匹配数组

5.Number

toFixed()

  1. 括号里设置保留小数位的长度
  2. 四舍五入

二.构造函数

公共的属性和方法 封装到构造函数里

//例如
function Star(uname,age){
this.uname=uname
this.age=age
this.sing=function(){
console.log('唱歌')
}
}

三.原型

1.目标

  • 构造函数通过原型分配的函数是对所有对象所共享的
  • 每一个构造函数都有一个prototype属性,指像另一个对象,所以我们也称为原型对象
  • 这个对象可以挂载函数,对象实例化不会多次创建原型上函数
  • 我们可以把那些不变的方法,直接定义在prototype对象上,这样所有对象的实例就可以共享这些方法
  • 构造函数和原型对象中this都指向实例化的对象

公共的属性卸载构造函数里,公共的方法写在原型对象

//公共属性写在构造函数
function Star(uname,age){
this.uname=uname
this.age=age}
//公共的方法写到原型对象
Star.prototype.sing=function(){
console.log('唱歌')
}

2.constructor属性

a.每一个原型对象都有的属性,该属性指向该原型对象构造函数,即

Star.prototype.constructor===Star

3.对象原型

a.在每一个对象里面都有一个属性__proto__(前后分别两个下划线)

b.注意

  • 只读,不能修改
  • [[prototype]]等于__proto__
  • 指向原型prototype
  • __proto__(对象原型)里面也有一个constructor属性,指向创建该实例对象的构造函数

4.原型继承

a.借助原型对象来继承

公共的 部分放到原型上

//抽取人
const Person={
eyes:2,
head:1
}//定义 女人的构造函数  并且继承Person
function Woman(){}
//继承person
Woman.prototype=Person
//指会原来的构造函数
Woman.prototype.constructor=Woman

5.原型链

a.原型链--查找规则

  1. 当访问一个对象的属性(包括方法)时,首先查找这个对象自身有没有该属性
  2. 如果没有就查找它的原型(也就是proto 指向的 prototype 原型对象)
  3. 如果还没有就查找原型对象的原型(0bject的原型对象)
  4. 依此类推一直找到 Object 为止(null)
  5. proto 对象原型的意义就在于为对象成员查找机制提供一个方向,或者说一条路线
  6.  可以使用 instanceof 运算符用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上

http://www.lryc.cn/news/620116.html

相关文章:

  • [ 数据结构 ] 泛型 (上)
  • Excel多级数据结构导入导出工具
  • Laravel 使用ssh链接远程数据库
  • Linux Framebuffer(帧缓冲)与基本 UI 绘制技术
  • 【R语言】RStudio 中的 Source on Save、Run、Source 辨析
  • 认知系统的架构: 认知残余三角形、认知主体意识 和认知演进金字塔
  • 【docker①】在VS Code中使用Docker容器
  • 从零用 NumPy 实现单层 Transformer 解码器(Decoder-Only)
  • 未来AI:微算法科技(NASDAQ:MLGO)开发基于忆阻器网络储层计算MemristorPattern虚拟平台
  • 通过限制网络访问来降低服务器被攻击风险的方法
  • 云原生技术k8s部署prometheus
  • 面向Python/C#开发者入门Java与Bukkit API
  • C# 反射和特性(元数据和反射)
  • Mysql——如何做到Redolog崩溃后恢复的
  • NLP学习之Transformer(1)
  • 算法题——哈希表
  • 洛谷 P2607 [ZJOI2008] 骑士-提高+/省选-
  • 从 Web 开发到数据科学:全栈基础技术总结
  • nm命令和nm -D命令参数
  • 互联网大厂Java求职面试实录:Spring Boot到微服务与AI的技术问答
  • 《量子雷达》第2章 从量子信息到量子雷达 预习2025.8.13
  • Canal解析MySQL Binlog原理与应用
  • RC4算法实现
  • 一键自动化:Kickstart无人值守安装指南
  • 如何优雅地实现API接口每 10秒轮询请求?
  • 力扣面试150题--三角形最小路径和 最小路径和 不同路径 最长回文子串
  • RagFlow启动源码说明
  • 前后端分离项目在云服务器的部署
  • 【系统安装】虚拟机中安装win10企业版系统记录
  • CSS保持元素宽高比,固定元素宽高比