首页 > 编程语言 >前端进化笔记-JavaScript(四)

前端进化笔记-JavaScript(四)

时间:2023-08-14 17:35:09浏览次数:34  
标签:返回 前端 JavaScript 笔记 baby let 字符串 参数 方法

生活想要将我活埋,怎料我是一颗种子


基本引用类型

对象是引用类型的实例:new后面跟一个构造函数就创建了一个新对象,例如let now = new Date(); ,这样就创建了一个Date对象.

Date类型

方法

  • Date.parse( ):根据传入的参数返回毫秒数。参数为有固定格式的表示日期的字符串。
  • Date.UTC( ):同parse方法类似,但是传入参数有所不同。
  • Date.now( ):返回方法执行时的毫秒数。这个方法感觉比上面两种方法有用的多。
  • 继承的方法:
    • toLocaleString( ):输出本地时间字符串
    • toString( ):和上面的方法输出逐渐趋于一致(字符串)
    • valueOf( ):返回毫秒数(数值)
  • Date类型还有很多关于日期的方法,他们可以返回格式化日期的字符串或者只返回特定的年份月份等。

RegExp类型

正则表达式的基本形式JavaScript都基本支持。

let p1 = /[bc]at/i;let p2 = new RegExp("[bc]at","i");两种方式定义的正则表达式一样。

值得注意的是,对于正则表达式中的元字符需要用转义字符\才能表示,而通过构造函数创建表达式时第一个参数为字符串,这意味着如果字符串中有转义字符则还需要在转义字符再前加一个转义字符。

实例的属性

除了用布尔值表示是否设置了某标记的属性之外(如global:表示是否设置了g标记),还有三个特殊的属性。

  • lastIndex:整数,表示源字符串下一次搜索的开始位置,始终从0开始
  • sourse:正则表达式的字面量字符串(没有斜杠)
  • flags:标记字符串(没有斜杠)

实例的方法

什么是捕获组?
模式中被()括起来的部分。
主要方法为exec( )。只接收一个参数,即将应用模式(就是正则表达式如p1,p2)的字符串。找到匹配项就返回一个数组,否则返回null。该数组额外有两个属性:index和input。index是字符串匹配模式的起始位置,input表示要查找的字符串(参数)。数组的第一项是匹配整个模式的字符串(最大的),其他项则是对应匹配成功的捕获组。

let t = 'mom and dad and baby';
let p = /mom( and dad( and baby)?)?/gi;
let m = p.exec(t);
console.log(m[0]);//"mom and dad and baby" t应用模式p后得到的第一项是整个字符串
console.log(m[1]);//" and dad and baby" 第一个捕获组( and dad ( and baby)?)其中" and baby"可以有也可以无。当t = 'mom and dad'时值为 and dad
console.log(m[2]);//" and baby" 第二个捕获组为( and baby)

正则表达式实例的另一个方法是test(),接收一个字符串参数。如果匹配返回true,多用于if语句中,适合只需要知道是否匹配,不需要知道匹配内容的情况。

除了上面两个比较常用的方法之外,正则表达式继承的toLocaleString()和toString()方法都返回表达式的字面量形式;而valueOf()方法返回的是表达式本身。

构造函数的属性

  • input($_):最后搜索的字符串
  • lastMatch($&):最后匹配的文本
  • lastParen($+):最后匹配的捕获组
  • leftContext:($`):input字符串出现在lastMactch前面的文本
  • rightContext:($'):input字符串出现在lastMactch后面的文本
    还有$1-$9用来表示第一到第九个匹配组。这些属性输出大多是字符串,只是对匹配过程中一些比较重要的部分进行代表,方便使用。

原始值包装类型

啥叫原始值包装类型?按照我的理解,就是给int string等数据类型绑定一些方法,从而方便我们操作。

当你用let创建一个变量之后,后台就会同时创建一个该变量数据类型的实例,从而使变量获得了方法。事实上,变量可以读也可以写,当需要读的时候才会创建实例,并且在执行完操作后立刻销毁。从而使原始值拥有对象的能力。
引用类型和原始值包装类型的主要区别在于对象的生命周期。通过new创建的实例会在离开作用域时销毁,而自动创建的原始值包装对象只存在于访问他的那段代码。

虽然原始值有了对象的能力,但那是很暂时的。因此我们不能显式的给原始值添加属性,因为这样做虽然成功的创建了实例也给其添加的属性,但是在这行代码结束之后,该实例就被销毁了,所以我们无论如何也拿不到我们曾经创建的属性(即使他被成功创建了)。

Boolean

Boolean是对应布尔值的引用类型。let bo = new Boolean(true);这样就创建了一个布尔值实例。

但是 强烈建议不要使用Boolean

Number

Number除了一些格式化数字的方法外。ES6新增了isInteger()方法,用来判断是否为整数。值得注意的是console.log(Number.isInteger(1.00));//结果为true。isSafeInteger()方法可以鉴别整数是否在IEEE754标准范围内。

String

String对应的是字符串,每一个String对象都有一个length属性。charAt()方法返回给定参数位置的字符,js提供了大量与字符串编码有关的方法,这里就不深入探讨了。除此之外,还提供了很多对字符串值进行操作的方法。

字符串操作方法

concat()方法用来拼接字符串,然后更常用的拼接字符串方法是使用'+'。
slice(),substr()和substring()都是从字符串提取子字符串的方法,他们都接收一个或两个参数。slice()和substring()第一个参数表示字符串开始位置,第二个则表示结束位置,而substr()第二个参数表示子字符串长度。

字符串位置方法

indexOf()和lastIndexOf()都用于在字符串中查找子字符串,区别是前一个方法从头开始找,后一个方法从尾开始找。除了第一个参数表示要查找的字符串外,还有第二个参数表示字符串开始的位置。

字符串包含方法

  • includes()和startsWith()的第二个参数都表示开始搜索的位置。
  • endsWith()的第二个参数表示从这个位置开始往前搜索。
    除此之外indexOf()方法应该也可以判断是否包含问题,包含则返回位置

trim()方法去除字符串所有空格,trimLeft()和trimRight()则用来去除前后的空格。

repeat()方法将字符串重复多次拼接起来返回全新的一个字符串。

字符串的迭代与解构

虽然迭代的概念本章没有涉及,但是我们也可以提前了解一下。大体上就是一个@@iterator方法,通过这个方法可以手动的去获得字符串的每一个字符。当然如果使用for-of循环则会自动使用该方法去遍历这个字符串。同时可以借助这个迭代器进行解构。console.log([...msg]); //输出msg中每个字符组成的数组

单体内置对象

内置对象:与宿主环境无关,在程序运行前就已经存在的对象

Global

Global对象是一种兜底对象,任何在全局作用域中定义的变量和函数都会变成它的属性和方法。它还有其他的一些方法。

URL编码方法

encodeURI()和encodeURIComponent()用来规范URI便于被浏览器识别。区别在于前者只会编码不属于URL组件的特殊字符(冒号,斜杠等)而后者会编码所有非标准字符。相对的有decodeURI()和decodeURIComponent()来分别进行解码。

eval()方法

它可以执行JavaScript代码eval("console.log('hi')");//与console.log('hi')等价,而且eval()函数中还可以获得当前执行上下文的变量。这个强大的方法也包含了可怕的危险。一个可以执行所有代码的函数是无所不能的。

通过window对象访问Global

let color = "red";
console.log(window.color)//获得全局变量color

除此之外,还有一种获得Global的方法

let global = function(){
  return this;
}();

Math

这个对象上包含了很多方便计算的属性和方法。

  • min()和max()用于确定最大最小值,他们都接收多个参数,并返回这些参数中的最值,这样就局限了我们的使用。对于数组,我们可以通过扩展操作符方便我们使用。
let arr = [1,2,3,4,5,6,7,9];
let max = Math.max(...arr);
  • random()方法返回一个0-1之间的随机数(不包括1)

标签:返回,前端,JavaScript,笔记,baby,let,字符串,参数,方法
From: https://www.cnblogs.com/wlhxqtothetop/p/17490535.html

相关文章

  • 前端 Java Python等资源合集大放送
    如果需要学习视频,欢迎关注【JAVA乐园】微信公众号,回复【领取资源】菜单一键领取以下所有200G干货资源,获取更多有用技术干货、文档资料。所有文档会持续更新,欢迎关注一起成长!1、vue全套Vue.js是一套构建用户界面的渐进式框架。只关注视图层,采用自底向上增量开发的设计。通过尽......
  • OpenCV笔记:cv2.VideoCapture 完成视频的跳帧输出操作
    前言 我开始关注这个问题,是在使用PaddleOCR+OpenCV进行视频文字识别的时候,因为OpenCV需要循环读取视频的每一帧进行解析,这就导致视频播放特别卡顿。由于视频中相邻帧的内容是一样的,重复识别也没有意义,所以我就在考虑:有没有办法跳帧输出?来源:https://blog.csdn.net/weixin_4425......
  • 什么是前端开发领域中的屏幕像素密度 Pixel Density
    当谈论到前端开发中的像素密度(PixelDensity),实际上是在讨论设备屏幕的像素密度,也称为像素密度或PPI(PixelsPerInch)。像素密度是指屏幕上每英寸(2.54厘米)所包含的像素数量。它是一个重要的概念,因为不同的设备在相同尺寸的屏幕上可能拥有不同的像素密度,从而影响显示效果和图像质量。......
  • 关于前端开发中 img 元素的 srcset 属性
    img标签的srcset属性是一种用于响应式网页设计的属性,它允许开发者为图像提供不同大小和分辨率的版本,以便根据设备的屏幕大小和像素密度自动选择最合适的图像进行显示。通过使用srcset属性,可以在不同设备上提供最佳的视觉体验,避免了不必要的图像变形和加载大尺寸图像的性能问......
  • Luckysheet:一个纯前端的excel在线表格
    最近因为项目要求,需要在页面上添加一个在线编辑excel的功能,因此只能在网上找有没有直接用的插件,最后很幸运的是幸好找到了一个----luckysheet.   这个是从luckysheet官网上找的图片,先看下能用插件做那些效果。  这个是中文官网地址:https://mengshukeji.gitee......
  • javascript1
    执行环境-作用域-函数进阶-闭包1.回顾map的使用和与for/forEach的区别map的使用-只能用于数组,返回一个新数组,map内部必须returnforEach原数组上进行遍历(本质是for循环),要改变原数组第一层值,必须配合索引当遍历数组为数组对象用forEach可以直接改变第二层的值例1vararr=[1.......
  • p7付费课程笔记7:G1 GC
    前言上次我们讲了CMSGC,这次我们讲解G1GC;在开始之前我们要思考下我们为什么学G1GC?学习后有什么好处?成为更好的Java开发工程师,在遇到服务性能问题、GC问题时,能够通过了解到的G1知识快速定位、解决相关问题在面试时GC问题也是常问的知识点,G1GC作为大多数工程师了解不是很多的知识......
  • unity学习笔记------游戏对象和脚本
    创建工程在开始使用Unity编辑器之前,我们需要首先创建一个项目。打开UnityHub,这个是Unity的启动程序和安装程序应用程序,你可以在其中创建或打开项目,安装Unity版本以及执行其他操作。创建新项目时,可以选择其Unity版本和模板。创建之后,它将添加到项目列表中,并在相应版本的Unity编......
  • 位运算 学习笔记【C++ 算法竞赛】
    大家好,欢迎来到我的第一篇博客位运算和移位运算作为计算机的基本运算之⼀,其都是对⼆进制位进⾏操作。作为近年算法竞赛笔试较热门的考点,它能够快捷地完成特定的应用。掌握它是⾮常有必要的。以下是目录:目录1.位运算的优先级2.左移运算<<、右移运算>>2.1运算规则:2.2应用:......
  • 问题解答:关于 SAP UI5 控制器(Controller) JavaScript 编码里单引号和双引号的用法澄
    笔者这篇教程文末,有朋友提问:SAPUI5应用开发教程之十-什么是SAPUI5应用的描述符文件manifest.json问题1:在index.html文件中body标签添加了代码:<divdata-sap-ui-componentdata-name="sap.ui5.walkthrough"data-id="container"data-settings='{"id":"wa......