当前位置: 首页 > 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.dtcms.com/a/329759.html

相关文章:

  • HunyuanVideo-Avatar:为多个角色制作高保真音频驱动的人体动画
  • C++哈希进阶-位图
  • 计算机网络技术-知识篇(Day.1)
  • java14学习笔记-打包工具 (Incubator)
  • MoonBit Perals Vol.05: 函数式里的依赖注入:Reader Monad
  • JPrint免费的Web静默打印控件:PDF打印中文乱码异常解决方案
  • 什么是JSP和Servlet以及二者的关系
  • window显示驱动开发—多平面覆盖 VidPN 呈现
  • MVCC底层实现原理
  • Flask入门:从零搭建Web服务器
  • 雅思大作文笔记
  • iOS 签名证书在版本迭代和iOS上架中的全流程应用
  • Docker 在 Linux 中的额外资源占用分析
  • 智汇河套,量子“风暴”:量子科技未来产业发展论坛深度研讨加速产业成果转化
  • 信息学奥林匹克竞赛(NOI/NOIP/CSP) 学习进度自查表
  • 使用 Python Selenium 和 Requests 实现歌曲网站批量下载实战
  • 嵌入式学习 day50 IMX6ULL裸机开发 - 时钟
  • Linux 5.15.189-rt87 实时内核安装 NVIDIA 显卡驱动
  • 手机充电线贴标机如何使用
  • 内存可见性和伪共享问题
  • php7 太空船运算符
  • 在实验室连接地下车库工控机及其数据采集设备
  • 《零基础入门AI:深度学习中的视觉处理(卷积神经网络(CNN)学习)》
  • Github desktop介绍(GitHub官方推出的一款图形化桌面工具,旨在简化Git和GitHub的使用流程)
  • SpringMVC 6+源码分析(六)参数处理
  • 18. parseInt 的参数有几个
  • C语言——深入理解指针(三)
  • 【LeetCode】6. Z 字形变换
  • 美团搜索推荐统一Agent之性能优化与系统集成
  • Linux小白加油站,第二周