创建对象的方法及一些方法

一、字面量

{}

let obj = {a:1,b:2}  // obj.alet obj1 = {'a-b':3} //obj1['a-b']let obj2 = {1:2,2:3} //obj2[1]//2let s1 = Symbol();
let s2 = Symbol();
var person = {
[s1]: "Lily",
[s2]: 18,
gender: "female"
};
console.log(person[s2]); // 输出 18

二、new Object

let obj = new Object()

三、构造函数

  • 通过构造函数创建的对象为实例对象,实例对象中的属性和方法称为实例成员
  • 构造函数内部的this就是实例对象,为其动态添加的对象和方法就是实例成员
  • 实例对象的constructor属性指向构造函数
  • instanceof 用于检测实例对象对应的构造函数

实例化执行过程说明:

1.创建新空对象

2.修改构造函数内的this,把this改为实例对象(说明构造函数中的this表示实例对象)

3.执行构造函数代码,给实例对象添加属性

4.返回新对象

其他说明:

构造函数中的返回值问题

1.正常来讲,构造函数中不需要返回值

2.如果构造函数中返回了一个原始类型值(字符串、数字、布尔),无效

3.如果构造函数中返回了一个引用类型的值(对象),则结果就是返回的这个对象了。

4.new Date()中的Date也是一个构造函数,只不过是内置的,类似Date的构造函数,还有:Arra、String、Math、Object……

静态成员:

给构造函数直接添加的属性或方法,叫做静态成员。

  • 静态成员只能由构造函数访问(直接给构造函数添加的)
  • 动态成员只能由实例对象访问(给实例对象添加的)
function Person(){// this表示实例对象this.name = 'lily'
}
//把构造函数也可当作对象用,可以通过【对象.属性】语法来添加属性或访问属性
//给构造函数直接添加的属性,叫做静态属性
Person.color = 'pink'
console.log(Person.color);//pinkPerson.say = function (){//给构造函数添加一个静态方法console.log('hello');
}
Person.say()let Jack = new Person()
console.log(Jack.name);//通过【对象.属性】来访问// 调用静态方法,使用【构造函数.方法()】
// 内置的静态方法有
Math.max()
Math.min()
Math.random()
// ……

内置构造函数

js中最主要的数据类型由数字,字符串,布尔值,null,undefined,对象
数字,字符串,布尔值,null,undefined称为简单数据类型
简单数据类型存在桟区
对象包括数组 和普通对象,也称为引用数据类型
引用数据类型桟区存地址 堆区存数据
数据传递:变量传递给另外一个变量 分为值传递 引用传递
值传递:会把数据复制一份传递(简单数据类型)
引用传递:会把数据地址复制一份传递(引用数据类型)
 

引用类型

Object、Array、RegExp、Date……

Object

这是一个静态方法,使用的时候不用new,不用实例化对象,即不用创建对象。直接通过【构造函数.方法】来使用即可,类似的方法还有Math.max()

  • Object为内置的构造函数 用于创建普通对象
  • Object.keys 静态方法获取对象中的所有键,结果是一个数组
  • Object.values 静态方法获取对象中所有键值,结果是一个数组
  • Object.assgin 静态方法:合并对象,将所有非第一个对象的内容合并到第一个对象中,可以用它来实现对象的(浅)拷贝
    • 语法一:Object.assign(obj,obj1,obj2)
    • 语法二:let obj = Object.assign({},obj1,obj2}
    • 注意:拷贝时,新对象和之前对象时独立的,修改一个,另一个不受影响,如果是对象直接赋值let obj =obj1,则修改一个对象,另一个对象也会受影响。
Array
  • Array内置的构造函数 用于创建数组
  • push 往数组末尾添加元素
  • unshift 往数组最前边添加内容
  • shift 删除数组第一个元素
  • pop 删除数组最后一个元素
  • slice 切片[起始,结束)返回新数组,不影响原数组,起始从0开始,不改变原数组,返回被截切的元素数组
  • splice(start,deleteCount,可选……) 拼接(起始位置,删除的数量,插入增加的元素【可选,插入到起始位置】) 指定删除某个元素【并替换成插入元素】,改变原数组,返回被删除的元素的数组
  • concat 拼接新数组
  • reverse 反转数组的顺序
  • join 将数组变成字符串,用()中符号拼接
  • indexof 用于查找某个元素在数组中首次出现的位置
  • lastIndexOf 用于查找某个元素在数组中尾次出现的索引位置,找不到返回-1
  • sort排序 编码排序,
    //注意:中文、英文按照Unicode编码进行大小比较排序(世界上所有的字符(拉丁文、英文、中文、日文等,包括符号)都对应这一个独一无二的Unicode编码
    let arr=[3,2,11,22,332,12]
    //sort return正数,则不交换两个元素的位置,return负数,则交换两个元素的位置,return0,则什么都不做
    arr.sort((a,b)=>a-b)//升序,a是后一个数,b是前一个数
    console.log(arr);
    arr.sort((a,b)=>b-a)//倒序,a是后一个数,b是前一个数
    console.log(arr);
    arr.sort((a,b)=>Math.random()-0.5) //打乱数组
    console.log(arr);

  • Array.isArray() 判断一个数组是不是真数组,静态方法
  • Array.from(伪数组) 把伪数组转换称真数组,要把伪数组转换成真数组 必须有length属性,静态方法
  • forEach 遍历数组
  • find:用于查找首次出现的满足条件的值,并返回
    • 如果有符合条件的元素,则返回这个元素
    • 如果有多个符合条件的元素,则返回找到的第1个元素,并终止查找
    • 如果没有符合条件的元素,则返回null
  • findIndex:用于查找首次出现的满足条件的值,并返回所在索引值
    • ​​如果有符合条件的元素,则返回这个元素的索引
    • 如果有多个符合条件的元素,则返回找到的第1个元素的索引,并终止查找
    • 如果没有符合条件的元素,则返回-1
  • reduce:可以把数组的元素累加到一起
    • ​​有初始值​​​​​
    • let arr=[3,2,11,22,332,12]
      //let sum = arr.reduce((总和,当前元素)=>{},初始值)
      let sum = arr.reduce((total,curr)=>{//因为有初始值,所以起始的时候,total=初始值return total +curr //第1次循环 100+3=103,第二次循环 103+2=105 。。。
      },100)
      console.log(sum);

    • 不给初始值
    • let arr=[3,2,11,22,332,12]
      //let sum = arr.reduce((总和,当前元素)=>{},初始值)
      let sum = arr.reduce((total,curr)=>{//因为没有初始值,所以起始的时候,total=第一个元素3,curr=第2个元素2return total +curr //第1次循环 3+2=5,第二次循环 5+11=16 。。。
      })
      console.log(sum);

  • some:根据给出的条件,判断数组中是否有元素符合条件,如果有一个或者几个元素符合条件,则返回true,如果任何元素都不符合条件则返回false.
    •         
      let arr=[3,2,11,22,332,12]
      let res = arr.some(item=>item>5)//只要数组中有元素大于5,即可得到true
      console.log(res);
  • every 根据给出的条件,判断数组中是否所有元素都符合条件,所有元素都符合条件才返回true,有任何一个元素不符合条件则返回false
    • let arr=[3,2,11,22,332,12]
      let res = arr.every(item=>item>5)//只有数组中所有元素都大于5,才可得到true
      console.log(res);//false

  • filter 筛选数组把满足条件的元素放到新的数组返回
  • map:遍历数组让每个元素执行一遍回调函数,把所有结果都放到一个新数组返回
RegExp

let reg = new RegExp(/abc/)

Date

包装类型

当把字符串、数字这种原始类型,当作对象使用的时候,JS会自动包装他们,把他们包装成对象,然后使用【对象.xxx】这样的语法,如:new String('abc')

Number:
  • toFixed(),保留几位小数,会四舍五入,为了避免精度问题,建议先将小数*百千,算完后再/百千
String:
  • 实例属性 length 用来获取字符串的长度
  • 实例方法 split 用来将字符串拆分成数组
  • 实例方法trim 用于去除字符串两端空白
  • 实例方法 toUpperCase 用于将字母转换成大写
  • 实例方法 toLowerCase 用于将字母转换成小写
  • 实例方法 indexOf 检测是否包含某字符,返回某个指定的字符串值在字符串中首次出现的位置,若是没有找到返回-1。
  • 实例方法 search 检查是否包含某字符串,检索字符串中指定的子字符串,和检索与正则表达式相匹配的子字符串。若是没有找到,返回-1
    • indexOf与search的区别

      search()方法也是一样返回目标子字符串索引值的。indexOf()和search()有什么区别呢?为何时候该使用它,何时该使用search()这个方法呢?

      首先要明确search()的参数必须是正则表达式,而indexOf()的参数只是普通的字符串。indexOf()是比search()更加底层的方法。图片

      若是只是对一个具体字符串来查找检索,那么使用indexOf()的系统资源消耗更小,效率更高;若是查找具备某些特征的字符串(例如查找以a开头,后面是数字的字符串),那么indexOf()就无能为力,必需要使用正则表达式和search()方法了。大部分时候用indexOf()不是为了真的想知道子字符串的位置,而是想知道长字符串中有没有包含这个子字符串。若果返回索引为-1,那么说明没有,反之则有。

  • 字符串截取 :

    • 注意:如果只有一个参数,那么这个索引值位置开始一直截取到最后

    • 实例方法 slice 用于字符串截取[start,end)方法提取字符串的一部分,并将其作为新字符串返回,而不修改原始字符串。
    • 实例方法 substring(start,end) 截取字符串[start,end),不改变原始数组
    • slice与substring的区别
      • substring是以两个参数中较小一个作为起始位置,较大的参数作为结束位置。

      • 当接收的参数是负数时,slice会将它字符串的长度与对应的负数相加,结果作为参数;substring则干脆将负参数都直接转换为0

        var test = 'hello world';alert(test.slice(-3));         //rld
        alert(test.substring(-3));     //hello worldalert(test.slice(3,-4));       //lo w
        alert(test.substring(3,-4));   //hel

      • 实例方法 substr(start,number):截取字符串(起始位置开始number个)如果长度为负数,将被视为零,已弃用不改变原始数组
  • 字符串其他方法:
    • replace:执行字符串替换    ,第二个参数也可以是方法
      console.log('this is a js'.replace('s','a'));//thia is a js//只找第一个s,然后替换
      console.log('this is a js'.replace(/s/g,'a'));//thia ia a ja//替换所有
      console.log('this is a js'.replaceAll('s','a'));//thia ia a ja//替换所有

    • includes:判断字符串中是否包含某个字符,包含则返回true,不包含则返回false
    • startsWith:判断字符串的开头是什么,如果是则返回true,不是则返回false
    • endsWith:判断字符串的结尾是什么,如果是则返回true,不是则返回false
      • //判断字符串中是否包含某个字符,包含则返回true,不包含则返回false
        console.log('hello'.includes('h'));//true
        console.log('hello'.includes('ell'));//true
        console.log('hello'.includes('h',2));//false,从2的位置往后数,看字符串中是否包含h//判断字符串的开头是什么,如果是则返回true,不是则返回false
        console.log('hello'.startsWith('h'));//true
        console.log('hello'.startsWith('ell'));//false
        console.log('hello'.startsWith('ll',2));//true,从位置2开始算起,看这段字符串的开头是否是ll//判断字符串的结尾是什么,如果是则返回true,不是则返回false
        console.log('hello'.endsWith('llo'));//true
        console.log('hello'.endsWith('ll',4));//true,4个长度,意思是先截取4个字符串,然后看这4个字符的结尾是否是ll
        
Boolean

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

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

相关文章

抖音视频如何无水印下载,怎么批量保存主页所有视频没水印?

现在最火的短视频平台莫过于抖音,当我们刷到一个视频想下载下来怎么办?我们知道可以通过保存到相册的方式下载,但用这种方法下载的视频带有水印,而且有些视频不能保存到相册(这是视频作者设置了禁止下载)。…

Unity 关于SpriteRenderer 和正交相机缩放

float oldWidth 750f;float oldHeight 1334f;float newWidth Screen.width;float newHeight Screen.height;float oldAspect oldWidth / oldHeight;float newAspect newWidth / newHeight;//水平方向缩放float horizontalCompressionRatio newAspect / oldAspect;//垂直…

IDEA插件推荐

今天给大家推荐一款IDEA插件:Apipost-Helper-2.0,支持三大功能:写完代码IDEA内一键生成API文档;写完代码IDEA内一键调试;生成API目录树,双击即可快速定位API定义的代码…非常好用!而且完全免费&…

SELinux零知识学习三十五、SELinux策略语言之角色和用户(6)

接前一篇文章:SELinux零知识学习三十四、SELinux策略语言之角色和用户(5) 三、SELinux策略语言之角色和用户 SELinux提供了一种依赖于类型强制(类型增强,TE)的基于角色的访问控制(Role-Based Access Control),角色用于组域类型和限制域类型与用户之间的关系,SELinux…

找免费4K高清图片素材,就上这6个网站

使用图片素材怕侵权?那就上这6个网站,免费下载,4K高清无水印,赶紧收藏起来~ 1、菜鸟图库 https://www.sucai999.com/pic.html?vNTYxMjky 一个很大的素材库,站内主要还是以设计素材为主,像图片素材就有上百…

免费SSL证书服务——加密通信,零成本体验

你的网站是否安全无忧?我们为你提供免费SSL证书服务,让你的用户数据和信息传输更安全可靠。 安全保障: 全面升级你的网站安全性,通过SSL加密技术,确保用户数据传输隐私无忧。 零成本: 免费SSL证书服务&…

【影刀RPA_写入日期到飞书表格】

飞书将日期写入多维表格,日期格式需要时毫秒级的时间戳才行。

常见面试题-Netty中ByteBuf类

了解 Netty 中的 ByteBuf 类吗? 答: 在 Java NIO 编程中,Java 提供了 ByteBuffer 作为字节缓冲区类型(缓冲区可以理解为一段内存区域),来表示一个连续的字节序列。 Netty 中并没有使用 Java 的 ByteBuff…

MySQL主从同步延迟原因与解决方案

一、MySQL数据库主从同步延迟产生的原因 MySQL的主从复制都是单线程的操作,主库对所有DDL和DML产生的日志写进binlog,由于binlog是顺序写,所以效率很高。 Slave的SQL Thread线程将主库的DDL和DML操作事件在slave中重放。DML和DDL的IO操作…

08 木谷博客系统RBAC权限设计

这节内容说一下木谷博客系统的权限设计,采用现在主流的权限模型RBAC,对应关系如下: 以上5张表都在mugu_auth_server这个库中 该部分的服务单独定义在user-boot这个模块中。 将角色、权限对应关系加载到Redis 木谷博客系统在认证中心颁发令牌的时候是将用户的角色保存到令牌…

MySQL用得好好的,为何要转ES?

MySQL是一种关系型数据库,它可以高效地存储和查询结构化的数据。 ES是一种分布式搜索引擎,它可以快速地对海量的非结构化或半结构化的数据进行全文检索和分析。 MySQL 和 ES 的数据存储方式也不同。MySQL 中的数据通常是以关系型表的形式存储在磁盘上&…

PTA:百钱买百鸡 - C/C++ 数组及字符串

题目 我国古代数学家张丘建在《算经》一书中提出了下述数学问题: 鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何? 请使用三重或者二重循环求解N块钱买N只鸡的问题:计算并…

EOCR-PFZ数码型产品与控制柜主回路的连接方式

上海韩施电气自动化设备有限公司 施耐德EOCR新一代数码型电动机保护器具有体积小、精度高、抗干扰能力强等特点。为方便安装,EOCR数码型产品与控制柜主回路的连接具有多种方式,分别是:窗口型、贯穿性和端子型。 窗口型(韩施电气…

vue3中shallowReactive与shallowRef

shallowReactive与shallowRef shallowReactive: 只处理了对象内最外层属性的响应式(也就是浅响应式) shallowRef: 只处理了value的响应式, 不进行对象的reactive处理 总结: reactive与ref实现的是深度响应式, 而shallowReactive与shallowRef是浅响应式。 什么时候用浅响应…

Leetcode.974 和可被 K 整除的子数组

题目链接 Leetcode.974 和可被 K 整除的子数组 rating : 1676 题目描述 给定一个整数数组 n u m s nums nums 和一个整数 k k k ,返回其中元素之和可被 k k k 整除的(连续、非空) 子数组 的数目。 子数组 是数组的 连续 部分。 示例 1&…

Kafka的ACK应答级别

在 Kafka 中,ACK(Acknowledgement)应答级别是一个重要的概念,它决定了消息发送到 Kafka 集群后如何确认消息的成功存储。生产者可以根据需要设置不同的 ACK 级别,以在数据可靠性和传输效率之间做出权衡。以下是 Kafka …

万字解析设计模式之观察者模式、中介者模式、访问者模式

一、观察者模式 1.1概述 观察者模式是一种行为型设计模式,它允许一个对象(称为主题或可观察者)在其状态发生改变时,通知它的所有依赖对象(称为观察者)并自动更新它们。这种模式提供了一种松耦合的方式&…

47. QT Android针对Java代码常见接口类型的调用方式总结

1. 说明 在QT中提供了一个接口QAndroidJniObject,可以很方便的对java代码进行调用,但是QT提供的这个类使用起来也并不是很简单,需要根据不同的java接口形式传入不同的参数,比如说在java中定义了一个无参无返回值的接口和一个无参有返回值的接口,又或者定义的还有带参带返…

园区智能配电系统(电力智能监控系统)

园区智能配电系统是一种针对园区电力配送和管理的智能化系统。它的主要功能是实时监控设备运行情况,进行电能质量分析,监控电能损耗,以及分时段用电统计等。 具体来说,园区智能配电系统可以利用现代技术如RS-485总线通信、数据库管…