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

学习: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.xdnf.cn/news/17794.html

相关文章:

  • Java开发主流框架搭配详解及学习路线指南
  • C++ stack and queue
  • 【motion】身体动作与面部表情捕捉5:Motion-X++ 数据集下载和选择
  • Java研学-RabbitMQ(六)
  • Docker:快速部署 Temporal 工作流引擎的技术指南
  • Lombok插件介绍及安装(Eclipse)
  • YOLO-v2-tiny 20种物体检测模型
  • 部署在linux上的java服务老是挂掉[排查日志]
  • 终端安全检测与防御
  • 5. synchronized 关键字 - 监视器锁 monitor lock
  • 2025年,Javascript后端应该用 Bun、Node.js 还是 Deno?
  • MyBatis-Plus 分页失效问题解析:@Param 注解的影响与解决方案
  • “我店模式”:零售转型中的场景化突围
  • 万字长文全解析:五种主流归一化方法深入讲解(BN/LN/IN/GN/WN)
  • 资源查看-lspci命令
  • React useMemo 深度指南:原理、误区、实战与 2025 最佳实践
  • Linux网络性能调优终极指南:深度解析与实践
  • pt-online-schema-change 全解析:MySQL 表结构变更的安全之道
  • Jenkins(集群与流水线配置)
  • 神经网络的核心组件解析:从理论到实践
  • Qt字符串与数值相互转换
  • 蓝桥杯备赛 按键、LCD、定时器
  • 面试实战 问题二十七 java 使用1.8新特性,判断空
  • 3.Ansible编写和运行playbook
  • 基于 MybatisPlus 将百度天气数据存储至 PostgreSQL 数据库的实践
  • k8s中的微服务
  • HTTP 请求转发与重定向详解及其应用(含 Java 示例)
  • 【Golang】 Context.WithCancel 全面解析与实战指南
  • model层实现:
  • CompletableFuture介绍及使用方式