
javascript
傻她你呀
这个作者很懒,什么都没留下…
展开
-
js监听数据的变化
js监听数据的变化一般来说,变量的值为基本数据类型时基本上没有办法去监听数据的变化,例如:// 定义一个变量let name = "tom"// 变量name的值发生了改变name = "jerry"// 但是无法进行监听但是呢,变量的值为引用数据类型的时候就监听里面属性的数据变化let vm = { name: "tom"}// vm里边的name实际上可以进行监听Object.keys(vm).forEach(key => { definedAttribu原创 2020-06-25 22:54:11 · 19375 阅读 · 1 评论 -
js监听数组的变化
js监听数组的变化最近在造轮子的时候遇到了这么一个问题,那就是数组在调用内部方法的时候怎么才可以监听到数组发生了变化,举个例子:假设一个数组调用了一个push方法,如果才可以知道数组调用了push方法,怎么去监听呢???如果是直接调用数组内部的方法,那么不会监听到数组的变动,为此可以进行改造,代码如下:// 获取Array的原型,并创建一个新的对象指向这个原型const arrayMethods = Object.create(Array.prototype)// 创建一个新的原型,这就是改造原创 2020-06-25 22:38:52 · 11800 阅读 · 0 评论 -
关于redux的简易实现
关于redux的简易实现最近在React的购物车项目中使用了redux,感觉蛮好用的,现在根据redux的使用来反向推测代码构成。首先看看redux怎么使用的redux的使用过程首先定义reducer【reducer实际上可以理解为动态的state数据】定义action,action就是触发reducer数据进行更新的方法一般来说会有初始化的state数据// state.js// 初始化state数据const state = { // 定时器 num: 0}//原创 2020-06-21 21:46:03 · 271 阅读 · 0 评论 -
使用flow检查代码
使用flow检查代码想要安装flow可以点击flow官网在这里我建议全局安装,当然你也可以在项目中安装// 全局安装yarn global add flow-bin// 项目中安装// 进入项目的根目录yarn add --dev flow-bin如果你想使用flow检查某个js文件,那么你要在这个js文件的第一行添加// @flow以下是文件demo.js// @flowfunction Hello(num){ return 2 * num}Hello("ok原创 2020-06-14 17:17:41 · 548 阅读 · 0 评论 -
基于js的坦克大战游戏
基于js的坦克大战游戏代码就懒得写了,直接查看GitHub项目,请点击这里下载项目之后,直接打开demo.html文件键盘上的方向键是控制坦克的运动,按下s键可以让坦克发射炮弹原创 2020-05-16 11:43:59 · 412 阅读 · 0 评论 -
基于js制作贪吃蛇游戏
基于js制作贪吃蛇游戏懒得上代码了,直接去看github项目,点击这里原创 2020-05-11 22:03:05 · 266 阅读 · 1 评论 -
javascript进行中文分词
javascrit进行中文分词分词工具:cncut// 下载方式:// npm npm i cncut// yarn yarn add cncutcncut的使用const cncut = require("cncut")const cn = cncut()console.log(cn.cut("你是不是傻啊").join("/"))console.log(cn.c...原创 2020-03-12 21:29:21 · 5380 阅读 · 1 评论 -
有限背包问题的算法之javascript
有限背包问题假设有一个背包的容量为5,总共有五种商品,每种商品所占的空间为[1, 2, 3, 4, 5],对应的价值为[2, 3, 4, 5, 6],求背包能够装下商品的最大价值,以及最大价值对应的商品组合方案,条件:每种商品只能装一种【这就是有限背包问题】先来讲讲我的算法思路:求出所有的商品组合方案,然后从中筛选出符合条件的商品组合方案,之后在求出每一种商品组合方案的价值,最后再求出最大的...原创 2020-03-10 15:19:50 · 436 阅读 · 0 评论 -
nodejs打印目录以及目录下的文件
nodejs打印目录以及目录下的文件目录就像这样:- video- - demo.flv- src- - index.html- - index.js- - router.js- asset- - demo1.png- - demo2.png- - demo3.png想要打印出整个目录以及文件,代码如下:const fs = require('fs')cons...原创 2020-01-13 09:38:53 · 1334 阅读 · 0 评论 -
js实现进制之间的转换
进制之间的转换代码如下:/* * @function base_transform* @param content {array, string, number} 要进行进制转换的内容* @param to {number} 转换之后的进制* @param from {number} 转换之前的进制* @return 转换之后的结果*/function base_transf...原创 2020-01-08 15:43:35 · 323 阅读 · 0 评论 -
16进制与buffer相互转换
16进制与buffer相互转换一个字节是8位,相当于16进制2位,因此为了方便表示,很多情况下,buffer打印出来是16进制显示的,但是本质上还是2进制,就好比buffer里边的 11111111 打印出来之后就会显示 ff首先说说16进制转buffer假设有一个数组,[1a, 2b, 3c, 4d, 5e, 6f]想要转成buffer,代码如下:var array = ['1a...原创 2020-01-07 21:23:56 · 8761 阅读 · 0 评论 -
如何快速下载哔哩哔哩番剧
如何快速下载哔哩哔哩番剧使用工具:ibili下载方法:npm i ibili比如要下载 群居姐妹 这部番剧,可以这样:const ibili = require('ibili')ibili.downloadVideo({ // 番剧的地址 url:'https://www.bilibili.com/bangumi/media/md2614/?from=search&...原创 2020-01-01 08:44:33 · 6216 阅读 · 1 评论 -
flvjs的使用案例
flvjs的使用案例flvjs是web播放flv视频的解决方案,想了解源代码的可以 点击这里以下是flv的使用案例第一步:首先最好本地有一个flv格式的视频,如果没有flv格式的视频,要是有其他格式的视频,你可以使用格式工厂转换成flv格式的视频,如果什么都没有,那只能下载flv视频了,以下是一个下载方法:安装 ibilinpm i ibili// demo.jsconst ...原创 2019-12-24 09:16:10 · 3147 阅读 · 1 评论 -
获取哔哩哔哩的视频评论
获取哔哩哔哩的视频评论使用工具:ibili下载方式:npm i ibili话不多说,现在我要获取 周杰伦告白气球MV 的视频评论,地址如下:https://www.bilibili.com/video/av15227278?from=search&seid=7509419184498080735以下是爬取代码:const ibili = require("...原创 2019-12-17 08:08:12 · 1105 阅读 · 0 评论 -
使用javascript爬取哔哩哔哩的视频弹幕
请点击我进行跳转或者访问一地址:https://blog.youkuaiyun.com/qq_41672008/article/details/103530229原创 2019-12-15 16:26:34 · 533 阅读 · 0 评论 -
使用nodejs爬取哔哩哔哩的视频弹幕
请点击我进行跳转或者访问一下地址:https://blog.youkuaiyun.com/qq_41672008/article/details/103530229原创 2019-12-15 16:24:59 · 1086 阅读 · 0 评论 -
教你快速爬取哔哩哔哩整部番剧的视频弹幕
快速爬取哔哩哔哩整部番剧的视频弹幕使用工具:ibili下载方式:npm i ibili为了进行测试,现在我打算爬取 刀剑神域 Alicization 的整部番剧的视频弹幕首先为了获取整部番剧的视频弹幕,需要知道一些必要的参数,第一个参数url是这部番剧的第一集的播放地址,即https://www.bilibili.com/bangumi/play/ep250536然后要知道这...原创 2019-12-15 10:52:56 · 1678 阅读 · 0 评论 -
ibili的使用教程
ibili这是一个专门用来下载哔哩哔哩视频和弹幕的工具库有以下功能:函数名功能loadbarrage爬取视频弹幕downloadVideo下载视频loadbarrage参数类型说明optstring如果opt是av号,那么会根据av号获取视频弹幕,如果opt是视频的播放地址(url),那么会根据视频的播放地址获取视频弹幕...原创 2019-12-13 00:19:57 · 1551 阅读 · 0 评论 -
弹幕资源
弹幕在这个地址里边:https://github.com/shataniya/danmu原创 2019-12-07 18:15:06 · 357 阅读 · 0 评论 -
websect的局限性
websect这几天一直在完善 websect的功能,现在基本上可以说websect的功能是比较完善的了,爬取网页的速度比 cheerio还要快,经过这几天的爬取测试,同时也发现了websect的局限性如果一个网页,全是使用div来书写,那么websect对于这种网页无能为力,不止这样,cheerio也无能为力,那么有解决办法吗?有,但是解决办法的效率不高,这一点很重要,那有没有效率更高的解...原创 2019-11-29 09:48:34 · 232 阅读 · 0 评论 -
websect的ReadME.md
websect的原理websect 实际上就是一个处理 html字符串的方法,可以把 html字符串解析成dom形式,这里的dom并不是想浏览器里真正的dom,而是一个dom解析的js对象,举个例子:const $ = require("websect")var s = `<p class="title" id="title">hello world</p>`v...原创 2019-11-26 10:43:19 · 213 阅读 · 0 评论 -
websect爬取自己csdn的所有博客
websect今天就来爬去一下自己的csdn里边所有的博客2333首先下载 websectnpm i websect首先来分析数据的格式,基本如下:文章的地址href,是不是原创type,标题title,内容简介content,发表时间date,和阅读数read_num,基本上就这6个数据const $ = require("websect")$.get("https...原创 2019-11-26 09:26:50 · 178 阅读 · 0 评论 -
websect爬取小米官网数据
websect首先下载websectnpm I websect还是老规矩,爬取小米官网的数据QAQ,不过这一个不一样,要爬取的是这个:现在使用 websect 进行数据的爬取:const $ = require("websect")$.get("https://www.mi.com").then(data=>{ var old = Date.now()...原创 2019-11-24 23:40:03 · 1390 阅读 · 0 评论 -
websect爬取小米官网数据
webesct首先要下载webesctnom i websect老规矩,还是爬取小米官网的数据QAQ,现在要爬取的是这个:const $ = require("websect")const fs = require("fs")// const cheerio = require("cheerio")$.get("https://www.mi.com").then(da...原创 2019-11-24 23:15:43 · 1328 阅读 · 0 评论 -
websect使用教程
websect上一篇已经讲了find的多级搜索,现在讲讲另外一个函数,info()info() 的作用是过滤所有的标签,然后获取文本看看这个例子:假设有一个html字符串:var s = `<div class="container"> <ul class="slider"> <li class...原创 2019-11-23 15:28:56 · 236 阅读 · 0 评论 -
websect使用教程
websect上一篇讲了有关websect的几个重要的函数,find(),each(),attr(),text(),对于find函数只讲了他的一级搜索,接下来讲一讲二级搜索和三级搜索,还有就是另外一个函数info()函数的使用find() 的二级搜索我平常比较喜欢使用小米的官网进行数据爬取的测试,为什么,因为小米官网的地址比较短2333,现在有下面这个场景:我想获取这些数据,首先要...原创 2019-11-23 15:15:11 · 282 阅读 · 0 评论 -
websect的使用教程
websect下载npm i websect概念说明内部原理实际上就是html字符串的解析,但是 websect 会找到指定的dom并进行解析,这里的dom实际上并不是浏览器里面的真实dom,而是类似于js对象的虚拟domfind() 函数的使用var $ = require("websect")var s = `<h1>hello world</h1>...原创 2019-11-22 21:51:35 · 508 阅读 · 0 评论 -
介绍websect
websectwebsect是我写的专门用来爬取网页信息数据的工具,里面的API设计和原生的操作dom的API一样,可能你会说,不是已经有cheerio了嘛,不过这个更快,websect的信息爬取速度比cheerio更快,话不多说,直接进入正题:下载npm i websect相关链接https://www.npmjs.com/package/websecthttps://...原创 2019-11-22 15:55:15 · 325 阅读 · 0 评论 -
monto的模型对象
monto的模型对象上一次说到了monto直接对数据库的增删改查,现在讲讲,monto的模型对象和mongoose一样,monto我也设计了模型对象,用来约束插入到表中的数据,好让数据具有自己制定的格式,话不多说,进入正题:连接数据库// 连接数据库const monto = require("monto")const db = monto("mongodb://localhost...原创 2019-11-16 09:07:46 · 207 阅读 · 0 评论 -
谈谈promise,谈谈微任务
谈谈promise,谈谈微任务javascript 的异步执行机制,思路基本上是这样的,先执行同步任务,然后执行异步微任务,然后执行异步宏任务还说什么,宏任务是 setTimeOut这些,然后微任务是 promise这些其实,在早些时候,我就测试过setTimeOut和promise的异步执行优先级,那个时候我就知道 promise的异步执行优先级 是要高于 setTimeOut的,如果你...原创 2019-09-21 19:06:19 · 2280 阅读 · 1 评论 -
探索解析HTMLDOM元素的秘密(一)
探索解析HTMLDOM元素的秘密使用html创建DOM对象轻而易举,但是使用javascript创建DOM对象会稍微显得有些麻烦,如下:const element = document.createElement("h1")element.id = "h1"element.innerHTML = "Hello World"document.body.appendChild(eleme...原创 2019-07-21 21:40:18 · 377 阅读 · 0 评论 -
自定义深度克隆函数
深度克隆通俗一点,深度克隆就是 深度复制,也就是 把一个变量赋值到另一个变量上,但是后一个变量的的改变不会引起前一个变量的改变对于浅复制,可以使用 Object.assign() 来实现遗憾的是,javascript好像没有提供直接进行深度复制的方法,因此,只能知己写一个另外,通过 JSON.parse(JSON.stringify()) 实际上也是可以进行深度复制的,原理就是把 数据转...原创 2019-07-19 21:39:05 · 355 阅读 · 0 评论 -
栈的数据结构3
栈的数据结构栈是一种遵从后进先出原则的有序集合新添加和要删除的元素都会在栈顶新元素都会在栈顶,旧元素都会在栈底基于数组和对象创建栈的问题基于数组和javascript对象创建栈的主要问题就是可以直接获取存储栈元素的数组或者对象,这样就会导致栈可以直接被修改,这是不被允许的,因此很不安全,为了安全性,应该设置一个不可以直接获取的东西来存储栈的元素创建基于WeakMap对象的栈...原创 2019-07-02 19:09:39 · 155 阅读 · 0 评论 -
栈的数据结构2
栈的数据结构栈是一种遵从后进先出原则的有序集合新添加和要删除的元素都会在栈顶新元素都会在栈顶,旧元素都会在栈底创建基于javascript对象的栈栈中的方法描述push(element)向栈顶添加一个元素pop()删除栈顶的元素peek()返回栈顶的元素isEmpty()判断栈里有没有元素,有就返回true,否则返回falsecle...原创 2019-07-02 18:53:40 · 137 阅读 · 0 评论 -
栈的数据结构1
栈的数据结构栈是一种遵从后进先出原则的有序集合新添加和要删除的元素都会在栈顶新元素都会在栈顶,旧元素都会在栈底创建基于数组的栈栈中的方法描述push(element)向栈顶添加一个元素pop()删除栈顶的元素peek()返回栈顶的元素isEmpty()判断栈里有没有元素,有就返回true,否则返回falseclear()删除栈里所...原创 2019-07-02 18:40:11 · 217 阅读 · 0 评论 -
NaN的深刻理解
NaN的深刻理解NaN,就是 not a number 的缩写,意思就是 不是数字NaN 是 javascript 里唯一一个和自身不相等的特殊值,即 NaN !== NaN ,换句话说,NaN === NaN 的结果是 falseNaN 不是数字,但是是数字类型,因为 typeof NaN 会返回 number,不是数字,却是数字类型,这个确实有点意思检验NaN的函数window...原创 2019-07-08 11:37:56 · 445 阅读 · 0 评论 -
Object.assign实现浅复制
Object.assign实现浅复制object提供了object.assign来实现深度克隆const arr1 = [1,2,3]const arr2 = Object.assign([],arr1)console.log(`arr1 = [${arr1}]`)console.log(`arr2 = [${arr2}]`)const arr1 = [1,2,3]const...原创 2019-07-07 21:09:57 · 121 阅读 · 0 评论 -
深度克隆
深度克隆对于基本数据类型,例如 string number boolean之类的没有克隆深浅的概念对于引用数据类型,像数组和对象,就有克隆的深浅之分,浅拷贝就是拷贝之后会影响原来的数据,深拷贝(深度克隆)就是拷贝之后不会影响原来的数据浅拷贝const zhangsan = { name:"zhangsan", age:24, gender:"man"}con...原创 2019-06-26 19:17:02 · 258 阅读 · 0 评论 -
打印出不大于n的n个值(1,2,...,n)的所有排列
之前偶尔看到了一道算法题,大致意思就是打印出不大于n的n个值(1,2,...,n)的所有排列,举个例子,就是当你输入n为2时,输出:12,21 ,当你输入n为3时,输出为:123,132,213,231,312,321,以此类推。。当我看到这个算法题的时候,觉得挺有意思,从数学的角度来看,n个数的全排列是A(n,n)=n!,排列数就是n的阶乘,如果说直接去实现这个功能,可能会比较难,之后我...原创 2019-06-09 11:15:42 · 240 阅读 · 0 评论 -
用JS制作轮播图
运用JS制作轮播图的动画效果,代码如下:<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title></title> <style type="text/css"&原创 2019-01-30 11:02:39 · 504 阅读 · 0 评论