自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

前端学习笔记

所幸南风知我意,吹梦渡我到西洲。

  • 博客(51)
  • 收藏
  • 关注

原创 你真的知道计算机是如何进行减法运算的吗?

问:现在的时间是3点钟,如何转动时针,让时间到达6点钟呢?答:顺时针旋转90°,亦或是逆时针旋转270°。问:图中一个字节的无符号数值,它代表十进制数据 0, 如何让它变成1呢?答:0000 0000 + 0000 0001,亦或是 0000 0000 - 1111 1111。时钟旋转一周为360°,顺时针旋转90°,也就等于逆时针旋转270°(360° - 90°);8位二进制数据最多表现为256种数值状态,加1,也就等于减去255(256 - 1);反过来说,逆时针旋转270°,也就等于.

2021-05-31 11:04:03 854 2

原创 有趣的css—简单的下雨效果2.0版

简单的下雨效果2.0版前言昨天发了有趣的css—简单的下雨效果,有位老哥给我提了一个很棒的建议,大致意思是雨滴应该和波纹的位置一致。这是按照老哥的建议完善后的效果图:思路制作背景首先给body中添加一个id为rain的div,并通过背景颜色线性渐变得到天空-地平线-海面的效果。<!DOCTYPE html><html> <head> <meta name="charset" content="utf-8"/>

2021-05-17 23:15:36 3840

原创 有趣的css—简单的下雨效果

简单的下雨效果前言最近在b站上看到一个下雨效果的视频

2021-05-16 16:46:18 2287

原创 JavaScript遍历对象方法总结

前言本篇内容将按照下图展开:遍历ObjectObject最常见的遍历方法方法就是使用for…in…,但其有一定的局限性,比如只能遍历可枚举属性。虽然Object无法直接使用for循环和forEach,但是经过Reflect.ownKeys / Object.getOwnPropertyNames / Object.getOwnPropertySymbols / Object.keys等方法转换直接得到Object中key值的集合后,是可以通过for循环和forEach来遍历的。方法获取属

2021-04-24 16:47:07 2111 27

原创 css详解background八大属性及其含义

background(背景)以前笔者在css盒模型以及如何计算盒子的宽度一文中提到过盒模型可以看成由 元素外边距(margin)、元素边框(border)、元素内边距(padding)和元素内容(content) 4部分组成,不过这只是从2D的视角来看盒模型的组成,而今天笔者将阐述如何从3D的视角看待盒模型的组成。从2D视角看盒模型示意图:从3D视角看盒模型示意图:background-color(背景颜色)背景颜色是背景中最常用的属性,它支持的值类型有:颜色名称,比如 red, white

2021-04-18 16:38:24 2749 7

原创 css详解position五种属性用法及其含义

position(定位)position — 作为css属性三巨头(position、display、float)之一,它的作用是用来决定元素在文档中的定位方式。其属性值有五种,分别是 — static(正常定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)、sticky(粘性定位)。static(正常定位)static(正常定位) 是元素position属性的默认值,包含此属性的元素遵循常规流1。正常定位呈现常规流的示例html代码:<!DOCTYP

2021-04-12 11:15:21 16157 6

原创 css盒模型以及如何计算盒子的宽度

盒模型与box-sizing盒模型与box-sizing盒模型元素外边距元素边框元素内边距元素内容box-sizingcontent-boxborder-box参考盒模型与box-sizing盒模型每个存在于可访问性树中的元素都会被浏览器绘制成一个盒子(因为元素设置display:none后不存在于可访问性树中,所以不被浏览器渲染)。每个盒子都是由4部分组成的,它们分别是元素外边距、元素边框、元素内边距和元素内容。元素外边距元素边框元素内边距元素内容box-sizingcontent-bo

2021-04-08 22:53:20 2994

原创 记录给树莓派刷Raspberry Pi OS(Raspbian)系统的配置流程

准备材料树莓派(一定要贴散热片,最好再加个小风扇)TF内存卡 (记得选传输规范为Class10标准的)读卡器电脑(这里我使用的电脑是Windows系统,其它系统可能与下面的步骤有出入,还望悉知)烧录系统镜像首先打开Raspberry Pi OS,可以看到3种类型的镜像文件:从上之下分别是:32位的有图形界面并内置常用软件版本32位的有图形界面版本32位的无图形界面版本其次可以打开镜像文件下载地址,可以看到有很多不同类型的镜像文件:raspios_full_ar.

2021-03-28 11:47:13 1119 2

原创 详细教程—使用闲置树莓派打造“小霸王学习机”

SD Card FormatterWin32 Disk Imagerrhttps://www.raspberrypi.org/software/operating-systems/

2021-03-20 21:48:20 1106 2

原创 JavaScript中判断对象是否属于Array类型的4种方法及其背后的原理与局限性

JavaScript中判断对象是否为Array类型的4种办法鸭子模型当一只动物走起路来像鸭子,叫起来也像鸭子,那它就是一只鸭子。当一个对象中包含Array类型中的属性(例如‘splice’、‘join’或者‘length’),那它就属于Array类型。prototypejs的1.6.0.3版本就是使用的这个逻辑,代码如下:isArray: function(object) { return object != null && typeof object == "object

2021-02-20 11:38:50 801 3

原创 深入了解typeof与instanceof的使用场景及注意事项

深入了解typeof与instanceof的使用场景及注意事项JavaScript中的数据类型分为两类,undefined,number,boolean,string,symbol,bigint,null1组成的基础类型和Object、Function、Array等类型组成的引用类型。何判断数据属于哪种类型是JavaScript中非常重要的一个知识点,其中最常用的两个方法就是分别使用typeof与instanceof这两个关键字来对数据的类型进行判断。typeof与instanceof虽然都可以用来

2021-02-09 15:22:47 626

原创 从问题入手,深入了解JavaScript中原型与原型链

从问题入手,深入了解JavaScript中原型与原型链前言开篇之前,我想提出3个问题:新建一个不添加任何属性的对象为何能调用toString方法?如何让拥有相同构造函数的不同对象都具备相同的行为?instanceof关键字判断对象类型的依据是什么?要是这3个问题都能回答上来,那么接下来的内容不看也罢。但若是对这些问题还存在疑虑和不解,相信我,下面的内容将正是你所需要的。正文新建一个不添加任何属性的对象为何能调用toString方法?我在深入了解JavaScript中基于原型(proto

2021-02-05 20:56:21 274 4

原创 深入了解JavaScript中基于原型(prototype)的继承机制

在翻阅JavaScript语言精粹看到了一句令我感觉诧异的话–**每个对象都连接到一个原型对象,并且它可以从中继承属性。**类似的话在MDN-对象原型也出现过。ES5 Object.create2009JavaScript语言精粹版次:2009年4月第一版2012年9月第二版MDN : Last modified: 2020年7月17日, by MDN contributors...

2021-02-03 23:10:26 343

原创 今天聊点干货—关于CSS样式来源

CSS样式来源样式来源浏览器默认样式em元素和strong元素显示效果em元素样式strong元素样式user agent stylesheet中em元素样式user agent stylesheet中strong元素样式用户样式Chrome中用户样式的修改FireFox中用户样式的修改补充说明链接样式嵌入样式行内样式样式来源总结参考样式来源CSS样式共有5个来源,它们分别是浏览器默认样式\color{#FF3030}{浏览器默认样式}浏览器默认样式、用户样式\color{#FF3030}{用户样式}用

2021-01-25 22:19:02 589

原创 你真的知道为什么要使用void(0)代替undefined吗?

我们平时用到的undefined\color{#FF3030}{undefined}undefined只是window\color{#FF3030}{window}window对象下的一个属性。Object.getOwnPropertyDescriptor(window, undefined);//{value: undefined, writable: false, enumerable: false, configurable: false}也正是因为如此,导致它在函数作用域中是可以修改。但前

2021-01-24 22:36:46 473 2

原创 一篇文章带你初步了解—CSS特指度

11个class的特指度是否比1个ID大?11个class的特指度是否比1个ID大?css选择器ICE计算公式11个class的特指度是否比1个ID大?css选择器css选择器决定css样式能渲染到对应的元素上。元素选择器:Class选择器:ID选择器:ICE计算公式单独的id、class和元素选择器很容易理解,但要是出现两种甚至三种不同选择器混合使用时又该如何计算特制度呢?要解决这个问题,不得不提到ICE计算公式:ID-Class-Element。接下来再看一个3个选择器作用在同

2021-01-20 23:42:32 242

原创 有趣的css—隐藏元素的7种思路

css隐藏元素的11种方法css隐藏元素前言第一种:display: none第二种:visibility: hidden第三种:opacity: 0第四种:transform: scale(0, 0)第五种:width: 0;height: 0;overflow: hidden第六种:transparent第七种:rgba(0,0,0,0)第八种:hsla(0,0%,0%,0)第九种:filter: opacity(0%)第十种:脱离屏幕显示位置第十一种:遮盖总结参考css隐藏元素前言和朋友聊天打屁

2021-01-16 17:39:50 273

原创 你真的了解数据在堆栈中的存储方式吗?

数据在堆栈中的存储方式JavaScript数据类型分为:分类类型原始数据类型(7种)Number、String、Boolean、Null、Undefined、Symbol(ES6)、BigInt(ES9)引用数据类型Object先看两段代码let num = 1;let data = num;data = 2;console.log('num : ' + num);//num : 1let obj = { name : 'obj'}let da

2020-09-27 21:12:21 1616

原创 选择、冒泡、插入3种简单排序总结

选择、冒泡、插入3种简单排序总结选择排序冒泡排序插入排序选择排序操作:从第0位开始,逐步与1、2、3……n-1对比,将最小的数置换到第0位;再从第1位开始,逐步与2、3、4……n-1对比,将第二小的数置换到第1位;以此类推。特点:通过遍历未固定数据,找出其中最小的数值,并将其按由小到大顺序排列固定在相应位置,重复此操作,直到未固定数据长度为0。时间复杂度:O(n²)代码:let length = 5;let arr = new Array(length);for(let i = 0;i&lt

2020-09-20 18:46:42 154

原创 干货分享—通过链表实现队列功能

通过链表实现队列功能通过链表实现队列功能单向链表实现队列功能双向链表实现队列功能通过链表实现队列功能Array功能返回push底部插入数组长度unshift顶部插入数组长度pop底部删除删除的元素shift顶部删除删除的元素队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头1。比如上面

2020-09-20 18:30:38 307

原创 干货分享—通过链表实现栈功能

通过链表实现栈功能通过链表实现栈功能单向链表实现栈功能双向链表实现栈功能通过链表实现栈功能Array功能返回push底部插入数组长度unshift顶部插入数组长度pop底部删除删除的元素shift顶部删除删除的元素栈是一种只能在一端进行操作的数据结构,它遵守先进后出(LIFO-last in first out)。JavaScript中模拟栈操作很简单,比如上面表格中的push+pop或者unshift+shift,都具备模拟栈的功能。链

2020-09-20 18:17:32 265

原创 JavaScript中是如何定义私有变量的

定义私有变量前言闭包WeakMap前言JavaScript并不像别的语言,能使用关键字来声明私有变量。我了解的JavaScript能用来声明私有变量的方式有两种,一种是使用闭包,一种是使用WeakMap。闭包闭包的描述有很多种,比如:能访问其它函数作用域的函数;内部函数访问外部函数作用域的桥梁;…使用闭包构建私有变量的逻辑在于:1.在外部函数中声明变量和内部函数;2.使用内部函数访问或者修改变量值;3.在外部函数内返回内部函数;function outside(){ let va

2020-09-06 18:24:30 616

原创 你真的知道typeof null的结果为什么是‘object‘吗?

typeof null 为什么是object到目前为止,ECMAScript 标准中定义了8种数据类型,它们分别是Undefined、Null、Number、Boolean、String、Symbol(ES6)、BigInt(ES9)、Object。为了判断变量的数据类型,JavaScript还提供了typeof操作符。数据类型中的值通过typeof操作符操作过后输出的值对应表格:数据类型值结果Undefinedundefined‘undefined’Nullnul

2020-08-29 23:29:04 3290 2

原创 如何自己实现JavaScript中new.target的功能

new.target我现在还记得Douglas Crockford在JavaScript语言精粹提到过的:构造器函数,按照约定,它们保存在以大写格式命名的变量里。如果调用构造器函数时没有在前面加上new,可能会发生很糟糕的事情,既没有编译时警告,也没有运行时警告,所以大写约定非常重要。我以前也在JavaScript——深入了解this中记录过在构造器调用时省略new关键字还可能会污染全局作用域function Person(){ this.personName = 'person';}let p

2020-08-23 12:28:51 424

原创 箭头函数没有自己的 this,arguments,super或new.target?

箭头函数没有 自己的 this,arguments,super或new.target前言验证结论前言最近在看es6-promise代码时,发现了一个很有意思的现象(reject(1,2,3)并不对应catch里面方法的参数),为了验证这一问题,我使用了以下代码,结果却发现了一个新的问题:new Promise((resolve,reject)=>{ reject(1,2,3)}).then((res)=>{}).catch((val,val2,val3)=>{ //

2020-08-23 10:30:31 1572

原创 关于this,你真的了解吗?

一篇文章带你弄懂this前言前言相比Java中:this.属性名this.方法名this()构造函数JavaScript中严格模式/非严格模式两种情况下:全局作用域中的this函数作用域中的this作为对象的方法中的this作为构造函数的thissetter/getter的this…JavaScript:造成这一切的原因在于:语言万物皆对象JavaScripttrueJavafalse→_→Java中的function只是行为,而

2020-07-26 19:15:35 1302 7

原创 前端面试常考题—手写call、apply和bind

JavaScript——实现call、apply和bindapply满足条件代码call满足条件代码bind满足条件代码apply满足条件1.把第一个参数绑定到调用myApply的function运行时的this;2.第二个参数应与调用myApply的function的arguments内容一致;3.严格模式和非严格模式第一个参数为null或undefined时情况要与apply函数一致;代码Function.prototype.myApply = function(){ var conte

2020-07-05 16:26:28 234

原创 从实际开发中学习JavaScript—日期增加自然月

这里写目录标题前言代码测试代码结尾前言最近接到这样一个需求:业务场景: 在线签订电子合同;具体需求: 获取合同的起始时间与终止时间,以用户点击签约为起始时间,计算用户在页面中选择的合约生效时长(可选3个月、6个月、1年等等)并推算出终止时间;实现难点: 可能存在大月小月以及平年闰年时二月的天数转换问题(例如:用户在2020年1月31号签约,选择合约生效时长为3个月,但是2020年4月份只有30天,按我接到的需求这里应该设置终止时间为2020-04-30);代码核心 dateFormmat :

2020-06-11 20:54:17 1767 6

原创 JavaScript诡异的大括号

现在我要在JavaScript中创建一个对象,我可以:let obj = new Object();我想偷懒一点,我还可以:let obj = new Object;我觉得我还可以再懒一点:let obj = {};由此可见在上面的例子中大括号的作用与new Object()是一致的。然后我还能这样写,创建一个带有属性的对象,尽管它不被任何引用所引用。例1:{ name : 'xiaoming'}如果单单是这样,大括号一点也不诡异,不过就只有这些了吗?当然不是。请继续往下面看

2020-05-23 13:50:48 393

原创 一篇文章带你初探闭包

闭包定义定义

2020-05-19 19:59:43 364 1

原创 ECMAScript中所有函数的参数都是按值传递的?

JavaScript函数调用传的到底是引用还是值?前言基础类型和引用类型前言前段时间翻《JavaScript高级程序设计》,无意间发现了这样的一段描述:JavaScript函数调用传的是值。而作者给出的解释是:var people = new Object();function setName(data){ data.name = "data"; data = new Object(); data.name = "new Object"; return data;}var result

2020-05-17 15:03:39 752

原创 不严格的同源策略—跨文档消息

不严格的同源策略—跨文档消息前言以前在 同源策略中提过3种不严格的同源策略,今天就来细说其中的一种—跨文档消息。跨文档消息浏览器允许不同文档之间传递消息,而不管其源是否相同。假如现在这里有两个窗口,窗口a和窗口b,它们现在是不同源的。此时a可以调用postMessage方法传递消息时间,b可以调用onmessage方法来接收,虽然此时a和b还是不能互相访问,但是也可以实现安全的消息通讯了。...

2020-05-04 00:28:19 290

原创 干货分享—var、let与const之间如何选择

var、let与const前言为什么只使用var?我想使用let怎么办?var和let的区别块级作用域Hoisting(变量提升)前言我与JavaScript的相遇很巧合,在我第一次使用JavaScript前,我从来没有或者说从来没有机会去学习它。在那之前,我主要是进行android应用的开发,主语言是Java,后面为了迎合团队的技术栈,不得不使用JavaScript进行开。我现在还记得,当时...

2020-04-25 17:22:57 681

原创 前端优化—关于函数防抖你知道多少

函数防抖什么是函数防抖函数防抖代码什么是函数防抖函数防抖代码//普通写法var timer = null;var timerFunc = ()=>{ console.log("移动时间:"+new Date().getTime());}function moveFunc(){ if(null != timer){ console.log('xxxx'); clear...

2020-04-05 15:10:22 1327

原创 前端优化—关于函数节流你知道多少

函数节流什么是函数节流什么是函数节流还记的我以前写的一个功能,如何让点击事件在一秒钟之内只生效一次var time = null;function ableClick(){ var nowTime = new Date(); if(time == null || nowTime - time > 1000){ time = nowTime; return true; ...

2020-03-29 19:11:40 345

原创 android studio出现No cached version… available for offline mode

https://stackoverflow.com/questions/22607661/no-cached-version-available-for-offline-mode

2021-03-19 21:55:03 1224

原创 记录一次体现前端工具仔综合实力的实际操作

17年有一个项目,当时是使用的apicloud,因为有一款设备用到了庆科的WiFi模组,所以项目中使用了庆科在apicloud的模块Store中提供的mico模块。在这个项目上线后,一直风平浪静。直到最近项目重启,再去看,这个模块已经被下架了,而其它满足需求的模块需要付钱。虽然庆科的官网中有原生android和iOS开发的文档,但是iOS开发的技能点我压根就没点亮。不过经过我观察发现,每个模块都有一个ID。虽然mico模块在apicloud里面已经搜索不到了,但是在百度中搜索apicloud mico

2021-02-27 10:43:21 2282 7

原创 阿里巴巴矢量图标库批量添加图标

阿里巴巴矢量图标库批量添加图标方法平时找图标用的最多的就是阿里巴巴矢量图标库。但在阿里巴巴矢量图标库将一个库的图标加入购物车很麻烦。就比如手机淘宝图标库这个库,总共有434\color{#FF3030}{434}434个图标,如果手动一个个添加进购物车,费时又费力,吃力不讨好。那么有没有好一点的办法呢?经过我观察发现,每个icon中添加进购物车的元素的class属性中都包含“icon−gouwuche1”\color{#FF3030}{“icon-gouwuche1”}“icon−gouwuche1”

2021-01-22 23:27:01 855

原创 白鹭引擎升级

开始用的是5.2.13的引擎,后面打了个android的包,运行后日志提醒我升级,说是这个版本不支持渲染。提示是这样的egret upgrade --egretversion [target version]我就一直敲egret upgrade --egretversion [5.2.17](我下载的是这个版本的)一直不成功后面试了egret upgrade --egretversion ...

2020-03-22 20:58:40 559

原创 跨域技术

跨域技术由于 同源策略的限制,浏览器会对访问非同源的文档做出限制,接下来就是列举一些能突破这些限制的技术。跨域资源共享(CORS)这个在同源策略里面已经讲过了,在此不作赘述。优点:可以post,安全规范缺点:可能要改服务端代码,可能在低版本浏览器存在兼容问题图像ping在我们的开发过程中也能看到,img标签是不受同源策略影响的,动态创建img标签可以与服务器进行一种单向的跨域通讯方式...

2020-03-15 20:27:57 230

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除