javascript
文章平均质量分 70
小辣抓
<WEB /> Developer
展开
-
JS Const 关键字用于 Foreach
JS Const 关键字用于 Foreach对于 const 相信大家已经用的熟的不能再熟了,这里想谈论一下关于我的疑问对于 const按照惯例还是放个小的代码片for(const i = 0;i < n;i++) { console.info(i) // error}上面的代码不能正常运行,这是正常的,在我们的预料范围之内const 对于在 stack 上存储的数据向来都...原创 2019-04-05 22:12:50 · 1007 阅读 · 0 评论 -
javascript-js 如何高效的拼接字符串
javascript-js 如何高效的拼接字符串在js里如果这样申明一个字符串let str = "a"实际上是申明了一个字符串常量,而如果我们对这个字符串进行拼接let str = "a" + "b"实际上是创建了一个新的字符串对象,而原先的“a”字符串对象还留在了堆里,等待GC回收嗯,可以明确的看出,这样拼接实在不是很高效,特别是拼接次数很多的时候,频繁的创建新...原创 2018-04-02 21:38:16 · 2969 阅读 · 0 评论 -
深入理解Javascript-JS异步和事件循环
深入理解Javascript-JS异步和事件循环前言想想接触js已经很久了,也没有写过一篇关于js异步的文章。于是今天准备写一写js的异步,希望对想了解的同行们有所帮助首先需要说明的是这里讨论的是浏览器里的js,而不是服务端上的js,比如node。 node和浏览器中的js的异步还是多少有些不同的,如果想了解node中的异步或者事件循环,可以参考我的另一篇文章Node 事件循...原创 2018-03-18 22:42:17 · 1752 阅读 · 0 评论 -
ES6 Proxy-Javascript 优雅的书写getter、setter
ES6 Proxy-Javascript 优雅的书写getter、setter前言emmmmm…大家都写过javabean吧,在做javaee开发的时候,经常拿javabean做数据模型,当数据模型比较复杂的时候,会有一大堆的getter,setter之类的东西,虽然有些IDE会自动帮助生成getter,setter,但是看起来确实很糟糕,kotlin改进了这种局面,如需创建数据模型只...原创 2018-02-23 15:15:29 · 741 阅读 · 0 评论 -
html5 Storage存取的坑
html5 Storage存取的坑问题今天因为同事在做一个微信的小程序开发,问了我些关于storage的问题,原来觉得storage挺好用的,对于不必放在数据库里有需要持久化储存的数据可以放在localStorage里,对于一些需要根据session来储存的数据可以储存在sessionStorage,但是在使用storage的时候遇到个很棘手的问题。Storage的存取格式可能不统原创 2018-01-29 11:37:56 · 635 阅读 · 0 评论 -
Html5 使用Blob对象处理二进制
Html5 使用Blob对象处理二进制浏览器对二进制的处理的局限是一直存在的问题,当然,很多时候我们都迫切的需要一种处理二进制方法,在服务端的nodejs提供了buffer来处理二进制,而在客户端有blob。先来认识一下blob。blob是浏览器提供用来处理二进制的一个对象,我们用form来上传文件的时候,所使用的input,将它的类型设置为file,用户选择文件之后,会返回一个FileL原创 2018-01-09 19:10:48 · 5998 阅读 · 0 评论 -
javascript 的 apply实现继承
小生初学js,如果有什么错误的地方,还请大家见谅,还请大家指出.apply()是Function()里的一个函数,主要功能我们下面再讲,我第一次用apply()的时候也是稀里糊涂的,后来我发现它其实和其他高级语言里的继承有很大的关系.//定义一个函数Personvar Person = function(name,age){ //这里的this指代的是Person的实例的原创 2016-08-05 13:39:01 · 1310 阅读 · 4 评论 -
Js 实现带进度条的上传文件 预览
Js 实现带进度条的上传文件 预览前面说了File对象是Blob对象的子类,在html里每出现一个type为file的input标签,在解析dom结构的时候,这个标签就不单单只是一个input DOM对象,而是会被对应着一个fileUpload对象,通过fileUpload.files我们可以获得一个fileList对象,fileList对象是一个文件列表,里面包含需要上传的文件对象,通过文件原创 2018-01-12 14:56:25 · 3629 阅读 · 2 评论 -
Js base64编码实现
Js base64编码实现base64在前端领域中是相当有用,比如前端里的dataURL就是base64编码实现的,使用它的好处就很多了,假如需要从服务器拿到一些logo,但是这些logo可能只有几十byte甚至更小,那这样这个logo单独占用一条http传输是很不划算的,我们可以把这个logo进行base64编码,也就是dataURL,直接嵌入页面中,在浏览器获取页面的时候,直接由浏览器渲染原创 2018-01-11 21:18:32 · 2352 阅读 · 0 评论 -
Node 解决跨域问题 JSONP与CORS
Node 解决跨域问题 JSONP与CORS今天浅谈一下Node解决跨域的问题,其实跨域这个问题因为同源策略而一直存在的,是前端的必经之路,原来一直在用CORS,对于JSONP都忘的差不多,今天遇到一些小问题居然也懵了圈,以前也没有写过关于这方面的博文,所以今天特地拿出来写一下,希望能帮到大家。CORS 与 JSONP的区别CORS全称为跨域资源共享”(Cross-origin resource s原创 2017-11-08 21:39:43 · 5623 阅读 · 0 评论 -
html5 indexedDB 数据库 详讲
HTML5 进阶系列:indexedDB 数据库原文地址:http://www.cnblogs.com/linxin/p/6772451.html前言在 HTML5 的本地存储中,有一种叫 indexedDB 的数据库,该数据库是一种存储在客户端本地的 NoSQL 数据库,它可以存储大量的数据。从上篇:HTML5 进阶系列:web Storage ,我们知道 web Storage 可以方便灵活的在转载 2017-10-06 12:14:40 · 838 阅读 · 0 评论 -
【Js-Javascript】 关于hasOwnProperty和IndexOf的性能对比
【Js-Javascript】 关于hasOwnProperty和IndexOf的性能对比(ps:不要吐槽我的标题,js-JavaScript 只是为了方便搜索而已,如果你能看到这篇文章,那么它的作用就体现了,:) )今天做了一个小测试(测试环境node),测试了js的hasOwnProperty和indexOf的性能对比。先来看一下简单的测试demolet arr = [];for...原创 2018-03-27 21:47:13 · 1925 阅读 · 1 评论 -
经典回溯算法 八皇后 解法
经典回溯算法 八皇后 解法八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。回溯法又称作动态穷举法。下面来看一下具体的实现思路。一个皇后的具体位置必须满足以下条件:该皇后所在行没有其它皇后该皇后的...原创 2018-05-22 23:05:06 · 813 阅读 · 0 评论 -
求解 Fibonacci 的正确姿势
求解 Fibonacci 的正确姿势前言吼。很久没有产出博客了,这几天都闲的很,可是产出博客的好时机啊,可是写什么呢?脑子里过的第一个是 fibonacci,好啦,就写它吧!Fibonacci (递归)这玩意儿算是老朋友了,在大学,或者是刚学计算机基础的时候,递归的经典案例就是它,别被它的名字吓到,它就是普通的数列而已,它的通项公式是Fibonacci(n) = Fibonacci(n...原创 2019-02-20 18:39:42 · 606 阅读 · 2 评论 -
Koa-Static 该换换了吧 试试 Awesome-Static
其实还是得按自个儿的需求来。koa-static 有啥问题么koa-static是一个非常轻量的koa中间件,能够迅速的搭建起一个静态文件服务器,通常我们把静态文件都放进public,并且通过类似koa-static这样的东西来将我们的public作为静态目录,这样的话,我们就能直接通过根路由进行访问了。emmmm,扯多了。回到正轨首先koa-static不能映射到其他的路由上,一般是跟路...原创 2019-01-24 20:41:40 · 519 阅读 · 0 评论 -
【JavaScript】一行代码实现 JS 日期的排序
【JavaScript】一行代码实现 JS 日期的排序可读性为 0 哈哈哈哈哈。const sortDate = (parseDate =&gt; targetDateInfos =&gt; targetDateInfos.sort(({ date: preDate }, { date: nextDate }) =&gt; parseDate(preDate) - parseDate(next...原创 2018-12-21 17:06:24 · 671 阅读 · 1 评论 -
匿名函数的递归
匿名函数的递归本着想写一篇 Lambda 演算 的博文,但是因为太懒了, 就写一篇比较短的匿名函数递归的博文吧,实际上两个有着不可切断的联系,Lambda 演算还是留着以后写吧递归大家都知道,简单来说就是函数调用自身,但是匿名函数怎么来做递归呢?在函数为一等公民的语言中,函数能够当作参数进行传递,并且允许匿名函数的存在。先看一个 js 实现 Fibonacci的例子let fibonacc...原创 2018-09-29 20:38:06 · 1207 阅读 · 1 评论 -
潭州教育刷花
潭州教育刷花朋友在潭州教育上授课,想刷个花来支持一下,反正花也没啥用,把刷花的脚本分享出来。本身潭州教育上的花是不需要购买的,所以可以送无数朵,但是它会有时间限制,每五秒最多只能送一朵,要想达到刷花的效果啊,先把时间搞定了就好了我直接分享脚本吧 (e =&gt; e._ms_context_.timeControl = () =&gt; true &amp;&amp; setInterv...原创 2018-10-07 12:50:40 · 1138 阅读 · 3 评论 -
谈谈JS中的 {} + [] 和 [] + {}
谈谈JS中的 {} + [] 和 [] + {}先谈谈为什么会有这种问题,这是因为js的弱类型导致的,js的弱类型,导致js的隐式类型转换频繁。比如像标题中的{} + [],[] + {},你完全不能去预测它的类型。先来看一条在js里的隐式的rule,js在进行加法运算的时候, 会先推测两个操作数是不是number。 如果是,则直接相加得出结果。 如果其中有一个操作数为string,则...原创 2018-07-31 19:33:58 · 6861 阅读 · 1 评论 -
Javascript 让你的排序稳一些
Javascript 让你的排序稳一些最近在做一个TSlint的自定义rule,由于我们公司有太多的风格要求,这个工具是很必要的。同时该rule也会和其他rule一样,提供一个fixer,来帮助你自动修复代码。但是在开发中还是遇到了很多问题,其中有一个场景是我需要对很多的import语句进行排序,这就导致了我需要一个稳定的排序算法,因为import的先后顺序有的时候是很重要的。这时候就不能用j...原创 2018-07-27 14:53:43 · 507 阅读 · 0 评论 -
@ts-check 给js点类型看看!
@ts-check 给js点类型看看!js的动态类型一直是让人头疼的问题,特别是项目大了之后,难受的类型方面的错误会加大debug的强度,很难被发现。另一方面就是关于性能的方面,js的解释器在进行解释的时候会不断的将你的代码的类型进行推断,比如:let x = 1x = 'a'这样是在js里是没有任何问题的,但是解释器解释的时候,看到let x = 1,心想,那x肯定就是numbe...原创 2018-07-19 17:40:45 · 2808 阅读 · 0 评论 -
Js经验之谈 属性与键重复解决方案
Js经验之谈 属性与键重复解决方案今天在一个小项目中被大佬讲解了一番,虽然没有涉及到标题的问题,但还是引出了这个问题,先来看一个例子let data = {name:"zhangsan", age:19}data.hasOwnProperty("name") //true看样子是不会有什么问题如果是这样呢let data = {name:"zhangsan", age...原创 2018-07-23 20:07:25 · 997 阅读 · 0 评论 -
Html5 如何做到提交图片时及时预览
如何提交图片时及时预览应用场景经常在实际的项目应用中,我们为了更佳的客户体验,会在提交图片时候可以预览该图片。如此简单的应用场景在实际开发中屡见不鲜,下面来用html5的File API来实现。How常用的提交图片方式用表单提交。每当我们创建一个input[file]时,就会创建一个FileUpload对象,但是我们不用关心它是怎么被创建的,整个过程都会由浏览器帮我们完成。 下面是一个表单提交图片原创 2017-09-19 19:08:49 · 1133 阅读 · 0 评论 -
【electron】electron入门 教你如何创建第一个electron应用 并进行打包【超详细】
前言electron 是一个可以让我们使用js创建桌面应用程序的框架,并且可以很简单的实现跨平台,让我们可以更轻松的书写业务逻辑,而不用担心跨平台的问题。事实上,electron可以被看做一个精简版的Chrome,内部的V8解释器固然很强大,但是对比起传统的桌面应用程序,也有略显不足的地方。但是这样的框架只有electron一个吗?当然不是,与之相对应的,还有一款出名的框架NW.js,至于二者的差别原创 2017-10-05 00:01:06 · 22926 阅读 · 0 评论 -
js 解释器的尾调用优化机制 with 和 eval对性能的影响
前言今天浅谈一下js的解释器的尾调用优化机制,顺便提一下with 和 eval对其性能的影响。 eval和with语句都会对词法阶段的作用域产生影响。JavaScript引擎会在编译阶段进行数项的性能优化。其中有些优化依赖于能够根据代码的词法进行静态分析,并预先确定所有变量和函数的定义位置,才能在执行过程中快速找到标识符。—-《你不知道的javascript》js 的 解释器的解释过程要想知道原创 2017-05-12 23:56:21 · 1244 阅读 · 0 评论 -
AngularJS 过滤器
前言今天来把自己对AngularJS的一些认识和感悟给写下来,希望能和大家分享。Angular的过滤器Angular内部提供了一组过滤器,我们可以把他嵌在html里,就和angular的指令特性一样,不过这里我们需要借助的是一个 “|” 管道操作符,和stream的管道流有几分相似。 Angular内部提供了一组常用的过滤器,分别为一下几种:1.currency 用两个小数位和一个货币符号来格式化原创 2017-04-10 16:55:59 · 613 阅读 · 0 评论 -
AngularJS (=,@,&)绑定策略
前言Angular 把后端mvc思想作用于前端设计,利用双向数据绑定使得开发更加得心应手,今天想把自己对Angular的绑定策略心得给大家分享一下,顺便也是为了巩固自己的知识directive简介在angular中,指令固然好用,但是内置的指令显然不能满足我们的需求,于是angular允许我们自己创建自定义的指令。下面代码我们来创建一个自定义指令<!DOCTYPE html><html lang=原创 2017-04-07 16:20:33 · 876 阅读 · 0 评论 -
Node.js 通过https服务器利用js调用网络摄像头
前言最近写了一个js调用摄像头的代码,整体实现是非常简单,但是放到服务器上,通过外网访问后就会出现一个警告 我们需要通过js调用摄像头,但在此之前我们需要创建一个https服务器。所以,这篇博文就是帮助大家如何通过js 调用PC端的摄像头。如何通过js调用摄像头先看一下js调用摄像头的具体实现。 整个实现是基于Google提供的webRTC技术,它主要用来让浏览器实时获取和交换视频、音频和数原创 2017-03-05 12:15:59 · 13189 阅读 · 0 评论 -
V8 虚拟机的GC机制
V8简介V8是Chrome浏览器的javascript解释器,在第三次浏览器大战中,Chrome凭借优秀的V8引擎胜出。目前该JavaScript引擎已用于其它项目的开发。第一个版本随着第一个版本的Chrome于2008年9月2日发布。如此强大的js解释器,却存在着隐患的内存溢出问题,这是因为v8 引擎初始状态下,64位机器只被分配了1.4G的内存,32位机器只被分配了0.7G的内存,就算你有再大的原创 2017-02-02 19:32:15 · 3941 阅读 · 0 评论 -
Node.js websocket 使用 socket.io库实现实时聊天室
认识websocketWebSocket protocol 是HTML5一种新的协议。它实现了浏览器与服务器全双工通信(full-duple)。一开始的握手需要借助HTTP请求完成。其实websocket 并不是很依赖Http协议,它也拥有自己的一套协议机制,但在这里我们需要利用的socket.io 需要依赖到http 。 之前用java jsp写过一个聊天,其实实现逻辑并不难,只是大部分时间都用原创 2017-02-20 12:53:26 · 12536 阅读 · 2 评论 -
AMD 异步模块加载
1.CommonJSnode.js 即采用的commonJS的规范。 在node.js中,除了函数作用域外还有一个模块作用域,模块设计模式也因此体现,node就是基于模块编程,各个模块互不影响,耦合性很低,因此我们通常用一个模块封装一个功能。 在node 中,模块又分为两类,核心模块和文件模块。用户自定义模块的就是文件模块,下面我们来看看node里模块的定义与导入1.1CommonJS里模块的定原创 2017-01-16 12:55:16 · 3185 阅读 · 0 评论 -
ajax 初步
AJAXajax是一种能够更新网页局部内容的而不刷新整个页面的一种技术,它能够让js异步加载服务器上的内容。我这里为了演示,写上三个文件,用index.html来获取到服务器上的data.txt里的内容。index.html data.txt test.js下面是这三个文件的实现逻辑,并配上这三个文件的路径 webContent/index.html<!DOCTYPE html><html>原创 2016-10-19 20:29:04 · 619 阅读 · 0 评论 -
Node.js 获取前端ajax提交的信息
今天看一下Node.js怎么获取ajax提交的request 信息众所周知,ajax可以在不刷新整个页面的情况下实现局部刷新,这是相当好的一种方式,能够让我们动态更新信息,今天我们看一下怎么用node来接收到前端ajax提交过来的信息下面我贴一下前端的代码 index.html的代码我就不贴了, 因为里面就只有一个按钮而已,要实现的功能是点击按钮提交ajax异步请求主要贴一下js页面的代码$("b原创 2016-11-03 14:03:05 · 3693 阅读 · 0 评论 -
javascript-js 的prototype原型理解讲解
起初接触到这个prototype我是拒绝的,我还是花了一部分时间来理解这个东西,算不上精通,有什么问题回复在下面毕竟我是板砖挨惯了(滑稽);在我理解看来,prototype不外乎就两个基础的作用: 1.动态的添加类的属性和方法 2.复制原类的内容我们先来看第一个: 首先来定义一个简单的Person类;var Person = function(name,age){ //指定该类的属性为原创 2016-08-06 21:23:36 · 810 阅读 · 0 评论 -
AngularJS 浅谈DI-依赖注入 $injector的神奇之处
前言依赖注入(DI)和控制反转(IOC)都是java Spring里经典的面向对象编程的法则来削减计算机程序的耦合问题的解决方案。 在Angular中,引入了DI的思想,DI是一种工具思想,而不是一种目的,它的目的是为了降低程序代码之间的耦合。Angular的启动方式先看一下angular究竟是怎么启动的。 在等待DOM解析完毕后,触发DOMContentLoaded事件时,angular会尝试原创 2017-05-05 23:12:29 · 994 阅读 · 0 评论 -
浅析 Angular $q promise 回调异步嵌套解决机制
前言大概一个多个月忙着做公司开发的项目,做这个项目以来有些心得,但是感觉还是不如闷头学来的快,毕竟是实战,在这一个月以来,经历过各种适应布局,还算小有收获,不过最大的遗憾是荒废了angular的学习进度,所以趁着闲季,小补一下Angular ,也算对自己的一个巩固。一 、Promise的出现随着node.js的出现,异步逐渐被普及到web程序中来,随着异步带来的好处,也伴随着“回调噩梦”的出现,比如原创 2017-06-19 10:40:33 · 1786 阅读 · 0 评论 -
深入剖析 webpack 打包生成的一大堆代码到底是啥
1.为什么我们需要webpack现代webapp开发自然离不开模块化的开发,现代mvvm框架,诸如angular, vue, react 让前端掀起了MVC的浪潮,所以,我们迫切的需要一个前端自动化构建的工具,用来做代码压缩,合并,打包等一系列的自动化的操作,在这之前比较流行的是grunt和gulp,自webpack初出头角之后,就收获了大量的关注。无疑,webpack将是前端自动化构建必不可少的工原创 2017-08-12 18:02:53 · 9280 阅读 · 0 评论 -
web component 【Template】 创建自己的简单SPA应用
看到web component这么火爆,抽空写一篇关于template的博文,怎样创建一个简单的SPA应用。什么是Template在web component 中,template和它的名字一样,是一个模板标签,在它创建的上下文中,浏览器是不会去解析的,甚至不会去加载里面的任何资源,浏览器dom解析到template标签就跳过了,比如我们这样写 : <template> <img src='原创 2017-08-03 20:28:17 · 14116 阅读 · 0 评论 -
RxJS的秘密 Observable 可观察对象
前言最近因为Angular2了解到了RxJS这个东西,总的来说,RxJS的出现也是为了解决异步回调的,它针对于事件序列。RxJS是一个通过使用可观察序列来构建异步和基于事件的程序的库。它提供了一个核心类型:Observable、卫星类型(大概是这些类型均围绕于Observable,也就是Observable是根基,而这些是辅助类型):Observer、Schedulers、Subjects)和操作符原创 2017-07-26 11:39:41 · 4731 阅读 · 0 评论 -
JS-Javascript 迭代器设计模式 Iterator pattern
这篇博文简短的提一下Iterator的设计模式,以及这种设计模式给我们带来什么样的好处。1.begin为了体现面向对象的特性(近年来的ES6为这方面做了很大的努力),此篇博文的语言编写基于typescript,当然也会附上原生js的书写方式。1.1迭代器给我们带来了什么样的好处迭代器可以使我们快速的遍历一个序列对象,一个良好的迭代器使我们不用了解该序列底层的结构,而只用关心拿到值之后的处理,并且迭代原创 2017-07-24 22:56:42 · 2401 阅读 · 0 评论