
JavaScript
文章平均质量分 66
分享JavaScript学习笔记和心得。
大头爱学习
to learn,grow and share
展开
-
初识Promise
一、Promise是啥?Promise是异步编程的一种优雅的解决方案。它相比于回调和事件交互,更加合理和强大。它改善了深度回调的问题。 回调里面还有回调,层级较深的,代码看起来特别凌乱。而通过事件交互会多做一些工作,比如发送事件,监听事件,事件回调等操作。而Promise能够获取异步操作的结果,这样的话,方便进一步处理接下来的逻辑。Promise,简单来说,他就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。ES6将其写进了语言标准,并原生提供了Promise对象。Promi原创 2021-03-23 23:31:58 · 259 阅读 · 0 评论 -
JS 插入排序
算法描述插入排序的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下:从第一个元素开始,该元素可以认为已经被排序;取出下一个元素,在已经排序的元素序列中从后向前扫描;如果该元素(已排序)大于新元素,将该元素移到下一位置;重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;将新元素插入到该位置后;重复步骤2~5代码写法一:func原创 2021-02-28 22:38:03 · 398 阅读 · 0 评论 -
JS 冒泡排序
算法简介冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序不符合要求就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(数组的最前面)。代码第一种写法function bubbleSort(arr) { if (!Array.isArray(arr)) { return; } let sortedFlag =原创 2021-02-28 22:36:44 · 432 阅读 · 0 评论 -
JS 深拷贝与浅拷贝
其实在工作写代码和面试中,会经常碰到这两个概念:深拷贝,浅拷贝。但今天的重点是深拷贝。下面我将简单介绍下什么是深拷贝,浅拷贝?浅拷贝就是直接将一个Object对象所有的属性和属性值复制给另一个Object对象。这样导致的后果是,新对象和老对象相同的Object类型的属性值在内存中的指向是一样的,也就是新对象和老对象的Object类型的同一属性值指向的是同一块内存。因此修改新对象或者原对象,都会互相干扰。深拷贝是将一个Object对象的内容完全拷贝一份给新对象。修改原对象的属性或者属性值,都不会影响新对原创 2021-02-18 14:02:24 · 179 阅读 · 0 评论 -
Js如何遍历嵌套的Object对象
如何遍历嵌套的Object对象嵌套不深的话,可以选择用递归的方式去遍历。在这里写一下递归遍历的方式。下面举个栗子:let obj = { x: 10, y: 20, children: [ { x: 1, y: 2, children: [ { x: 3, y: 4原创 2020-11-19 23:21:15 · 2922 阅读 · 0 评论 -
Js实现Object按照值的某些字段(数值类型)的大小进行排序
最近,有个需求:将一个Object对象,按照值的某个字段(数值型)的大小来进行排序。感觉这个需求也算是有点用,也有点意思吧!就记录分享一下。看代码,写的很挫,将就着看吧。能用就行,哈哈!var objs = { "aaa": { name: "小明", age: 30 }, "bbb": { name: "小红", age: 20 }, "ccc": { name: "小花", age: 40 }}/** * * @param {*} obj 对象 * @param原创 2020-11-18 21:41:49 · 2808 阅读 · 4 评论 -
JS 正则表达式 验证姓名 身份证号
var regName =/^[\u4e00-\u9fa5]{2,4}$/;if(!regName.test(name)){ alert('真实姓名填写有误'); return false;}var regIdNo = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;if(!regIdNo.test(idNo)){ alert('身份证号填写有误'); return false;}...原创 2020-07-13 15:40:36 · 1215 阅读 · 0 评论 -
从数组中随机取n个元素
//随机获取[min,max]的随机整数let getRandomNumBetween = function(min, max) { return Math.floor(Math.random() * (max - min + 1) + min);}//从数组arr中,随机取nCount个元素,返回数组。可选择是否去重bQuChongvar getRandomArray = function(arr, nCount, bQuChong) { if (!(arr instanceo.原创 2020-05-31 10:20:25 · 2971 阅读 · 0 评论 -
JS之Promise
PromisePromise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理且更强大。它最早由社区提出并实现,ES6将其写进了语言标准,统一了用法,并原生提供了Promise对象。特点对象的状态不受外界影响 (3种状态) Pending状态(进行中) Fulfilled状态(已成功) Rejected状态(已失败) 一旦状态改变就不会再变 (两种状态改变:成功或失败) Pending -> Fulfilled Pending -> R转载 2020-05-11 23:04:29 · 343 阅读 · 0 评论 -
JS的call,apply,bind
请看实例代码var person = { name: "CoderXZ", age: 26, showInfo: function() { console.log("I am " + this.name + "," + this.age + " years old!"); }, showDetailInfo: function(province, city) { console.log("I am " + this.name原创 2020-05-11 22:29:28 · 213 阅读 · 0 评论 -
理解JS的6种继承方式
写在前面一直不喜欢JS的OOP,在学习阶段好像也用不到,总觉得JS的OOP不伦不类的,可能是因为先接触了Java,所以对JS的OO部分有些抵触。偏见归偏见,既然面试官问到了JS的OOP,那么说明这东西肯定是有用的,应该抛开偏见,认真地了解一下约定P.S.下面将展开一个有点长的故事,所以有必要提前约定共同语言: 1 2 3 4 5 6...转载 2020-04-04 15:24:32 · 251 阅读 · 0 评论 -
JS实现MD5加密
/* * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message * Digest Algorithm, as defined in RFC 1321. * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002. * Other contributors...转载 2020-03-27 17:55:34 · 637 阅读 · 0 评论 -
JS实现Base64编码与解码
function Base64() { // private property _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; // public method for encoding this.encode = function(input) ...原创 2020-03-26 22:11:36 · 461 阅读 · 0 评论 -
一道简单的JS闭包题
闭包应该是前端面试中经常碰到的面试题,很多小白都会在这个问题上被问住。如果想要弄清楚就要掌握闭包的概念;首先看面试题:for (var i = 1; i <= 5; i++) {setTimeout( function timer() {console.log(i);}, 1000 );}上面的代码会输出什么?答案是 程序会同时输出6 6...原创 2020-03-26 17:54:19 · 258 阅读 · 0 评论