Javascript !!!
文章平均质量分 70
JS是一个好东西啊
小辣抓
<WEB /> Developer
展开
-
【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 · 682 阅读 · 1 评论 -
潭州教育刷花
潭州教育刷花朋友在潭州教育上授课,想刷个花来支持一下,反正花也没啥用,把刷花的脚本分享出来。本身潭州教育上的花是不需要购买的,所以可以送无数朵,但是它会有时间限制,每五秒最多只能送一朵,要想达到刷花的效果啊,先把时间搞定了就好了我直接分享脚本吧 (e =&gt; e._ms_context_.timeControl = () =&gt; true &amp;&amp; setInterv...原创 2018-10-07 12:50:40 · 1151 阅读 · 3 评论 -
匿名函数的递归
匿名函数的递归本着想写一篇 Lambda 演算 的博文,但是因为太懒了, 就写一篇比较短的匿名函数递归的博文吧,实际上两个有着不可切断的联系,Lambda 演算还是留着以后写吧递归大家都知道,简单来说就是函数调用自身,但是匿名函数怎么来做递归呢?在函数为一等公民的语言中,函数能够当作参数进行传递,并且允许匿名函数的存在。先看一个 js 实现 Fibonacci的例子let fibonacc...原创 2018-09-29 20:38:06 · 1218 阅读 · 1 评论 -
谈谈JS中的 {} + [] 和 [] + {}
谈谈JS中的 {} + [] 和 [] + {}先谈谈为什么会有这种问题,这是因为js的弱类型导致的,js的弱类型,导致js的隐式类型转换频繁。比如像标题中的{} + [],[] + {},你完全不能去预测它的类型。先来看一条在js里的隐式的rule,js在进行加法运算的时候, 会先推测两个操作数是不是number。 如果是,则直接相加得出结果。 如果其中有一个操作数为string,则...原创 2018-07-31 19:33:58 · 6876 阅读 · 1 评论 -
经典回溯算法 八皇后 解法
经典回溯算法 八皇后 解法八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。回溯法又称作动态穷举法。下面来看一下具体的实现思路。一个皇后的具体位置必须满足以下条件:该皇后所在行没有其它皇后该皇后的...原创 2018-05-22 23:05:06 · 824 阅读 · 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 · 2827 阅读 · 0 评论 -
Js经验之谈 属性与键重复解决方案
Js经验之谈 属性与键重复解决方案今天在一个小项目中被大佬讲解了一番,虽然没有涉及到标题的问题,但还是引出了这个问题,先来看一个例子let data = {name:"zhangsan", age:19}data.hasOwnProperty("name") //true看样子是不会有什么问题如果是这样呢let data = {name:"zhangsan", age...原创 2018-07-23 20:07:25 · 1017 阅读 · 0 评论 -
Javascript 让你的排序稳一些
Javascript 让你的排序稳一些最近在做一个TSlint的自定义rule,由于我们公司有太多的风格要求,这个工具是很必要的。同时该rule也会和其他rule一样,提供一个fixer,来帮助你自动修复代码。但是在开发中还是遇到了很多问题,其中有一个场景是我需要对很多的import语句进行排序,这就导致了我需要一个稳定的排序算法,因为import的先后顺序有的时候是很重要的。这时候就不能用j...原创 2018-07-27 14:53:43 · 519 阅读 · 0 评论 -
html5 Storage存取的坑
html5 Storage存取的坑问题今天因为同事在做一个微信的小程序开发,问了我些关于storage的问题,原来觉得storage挺好用的,对于不必放在数据库里有需要持久化储存的数据可以放在localStorage里,对于一些需要根据session来储存的数据可以储存在sessionStorage,但是在使用storage的时候遇到个很棘手的问题。Storage的存取格式可能不统原创 2018-01-29 11:37:56 · 650 阅读 · 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 · 752 阅读 · 0 评论 -
深入理解Javascript-JS异步和事件循环
深入理解Javascript-JS异步和事件循环前言想想接触js已经很久了,也没有写过一篇关于js异步的文章。于是今天准备写一写js的异步,希望对想了解的同行们有所帮助首先需要说明的是这里讨论的是浏览器里的js,而不是服务端上的js,比如node。 node和浏览器中的js的异步还是多少有些不同的,如果想了解node中的异步或者事件循环,可以参考我的另一篇文章Node 事件循...原创 2018-03-18 22:42:17 · 1777 阅读 · 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 · 1940 阅读 · 1 评论 -
javascript-js 如何高效的拼接字符串
javascript-js 如何高效的拼接字符串在js里如果这样申明一个字符串let str = "a"实际上是申明了一个字符串常量,而如果我们对这个字符串进行拼接let str = "a" + "b"实际上是创建了一个新的字符串对象,而原先的“a”字符串对象还留在了堆里,等待GC回收嗯,可以明确的看出,这样拼接实在不是很高效,特别是拼接次数很多的时候,频繁的创建新...原创 2018-04-02 21:38:16 · 2988 阅读 · 0 评论 -
依赖注入(DI)和控制反转(IOC)
首先要解决的两个问题。1.什么是控制反转和依赖注入2.为什么我们需要控制反转和依赖注入什么是控制反转和依赖注入控制反转(Inversion of control) 是一种解耦的思想,它顾名思义,就是控制权的转移,比如项目经理让你改需求,这里就发生了控制权的转移,主要有三步:1.项目经理要求你添加功能 (这时,控制权在项目经理)2.你接到通知后开始添加功能需求 (控制权在你手上)3.交付需求成品(控制原创 2017-08-02 12:50:36 · 4563 阅读 · 0 评论 -
Node 解决跨域问题 JSONP与CORS
Node 解决跨域问题 JSONP与CORS今天浅谈一下Node解决跨域的问题,其实跨域这个问题因为同源策略而一直存在的,是前端的必经之路,原来一直在用CORS,对于JSONP都忘的差不多,今天遇到一些小问题居然也懵了圈,以前也没有写过关于这方面的博文,所以今天特地拿出来写一下,希望能帮到大家。CORS 与 JSONP的区别CORS全称为跨域资源共享”(Cross-origin resource s原创 2017-11-08 21:39:43 · 5635 阅读 · 0 评论 -
Html5 使用Blob对象处理二进制
Html5 使用Blob对象处理二进制浏览器对二进制的处理的局限是一直存在的问题,当然,很多时候我们都迫切的需要一种处理二进制方法,在服务端的nodejs提供了buffer来处理二进制,而在客户端有blob。先来认识一下blob。blob是浏览器提供用来处理二进制的一个对象,我们用form来上传文件的时候,所使用的input,将它的类型设置为file,用户选择文件之后,会返回一个FileL原创 2018-01-09 19:10:48 · 6002 阅读 · 0 评论 -
Js base64编码实现
Js base64编码实现base64在前端领域中是相当有用,比如前端里的dataURL就是base64编码实现的,使用它的好处就很多了,假如需要从服务器拿到一些logo,但是这些logo可能只有几十byte甚至更小,那这样这个logo单独占用一条http传输是很不划算的,我们可以把这个logo进行base64编码,也就是dataURL,直接嵌入页面中,在浏览器获取页面的时候,直接由浏览器渲染原创 2018-01-11 21:18:32 · 2369 阅读 · 0 评论 -
Js 实现带进度条的上传文件 预览
Js 实现带进度条的上传文件 预览前面说了File对象是Blob对象的子类,在html里每出现一个type为file的input标签,在解析dom结构的时候,这个标签就不单单只是一个input DOM对象,而是会被对应着一个fileUpload对象,通过fileUpload.files我们可以获得一个fileList对象,fileList对象是一个文件列表,里面包含需要上传的文件对象,通过文件原创 2018-01-12 14:56:25 · 3641 阅读 · 2 评论 -
javascript 的 apply实现继承
小生初学js,如果有什么错误的地方,还请大家见谅,还请大家指出.apply()是Function()里的一个函数,主要功能我们下面再讲,我第一次用apply()的时候也是稀里糊涂的,后来我发现它其实和其他高级语言里的继承有很大的关系.//定义一个函数Personvar Person = function(name,age){ //这里的this指代的是Person的实例的原创 2016-08-05 13:39:01 · 1325 阅读 · 4 评论 -
javascript-js 函数感悟讲解
最近学习js的时候一直摸不着头脑,因为它和我以前接触过的高级语言太不一样,这是我第一门接触的脚本语言,今天我想简单的说一下js 里的函数。如果我写的有什么不对的地方,请拿起板砖拍死我,并指明不对的地方,学习就要改进。废话不闲扯,js里的函数太不一样,太特别,因为可以说它既是类又是函数,要知道,在java里这两个的关系是完全不可能划上等号的,可是它在js里就可以!下面看一段代码首先声明一个func函数原创 2016-08-05 19:00:34 · 1103 阅读 · 1 评论 -
javascript-js 的prototype原型理解讲解
起初接触到这个prototype我是拒绝的,我还是花了一部分时间来理解这个东西,算不上精通,有什么问题回复在下面毕竟我是板砖挨惯了(滑稽);在我理解看来,prototype不外乎就两个基础的作用: 1.动态的添加类的属性和方法 2.复制原类的内容我们先来看第一个: 首先来定义一个简单的Person类;var Person = function(name,age){ //指定该类的属性为原创 2016-08-06 21:23:36 · 819 阅读 · 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 · 626 阅读 · 0 评论 -
Node.js 获取前端ajax提交的信息
今天看一下Node.js怎么获取ajax提交的request 信息众所周知,ajax可以在不刷新整个页面的情况下实现局部刷新,这是相当好的一种方式,能够让我们动态更新信息,今天我们看一下怎么用node来接收到前端ajax提交过来的信息下面我贴一下前端的代码 index.html的代码我就不贴了, 因为里面就只有一个按钮而已,要实现的功能是点击按钮提交ajax异步请求主要贴一下js页面的代码$("b原创 2016-11-03 14:03:05 · 3704 阅读 · 0 评论 -
AMD 异步模块加载
1.CommonJSnode.js 即采用的commonJS的规范。 在node.js中,除了函数作用域外还有一个模块作用域,模块设计模式也因此体现,node就是基于模块编程,各个模块互不影响,耦合性很低,因此我们通常用一个模块封装一个功能。 在node 中,模块又分为两类,核心模块和文件模块。用户自定义模块的就是文件模块,下面我们来看看node里模块的定义与导入1.1CommonJS里模块的定原创 2017-01-16 12:55:16 · 3198 阅读 · 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 · 3956 阅读 · 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 · 12552 阅读 · 2 评论 -
Node.js 通过https服务器利用js调用网络摄像头
前言最近写了一个js调用摄像头的代码,整体实现是非常简单,但是放到服务器上,通过外网访问后就会出现一个警告 我们需要通过js调用摄像头,但在此之前我们需要创建一个https服务器。所以,这篇博文就是帮助大家如何通过js 调用PC端的摄像头。如何通过js调用摄像头先看一下js调用摄像头的具体实现。 整个实现是基于Google提供的webRTC技术,它主要用来让浏览器实时获取和交换视频、音频和数原创 2017-03-05 12:15:59 · 13209 阅读 · 0 评论 -
AngularJS (=,@,&)绑定策略
前言Angular 把后端mvc思想作用于前端设计,利用双向数据绑定使得开发更加得心应手,今天想把自己对Angular的绑定策略心得给大家分享一下,顺便也是为了巩固自己的知识directive简介在angular中,指令固然好用,但是内置的指令显然不能满足我们的需求,于是angular允许我们自己创建自定义的指令。下面代码我们来创建一个自定义指令<!DOCTYPE html><html lang=原创 2017-04-07 16:20:33 · 886 阅读 · 0 评论 -
AngularJS 过滤器
前言今天来把自己对AngularJS的一些认识和感悟给写下来,希望能和大家分享。Angular的过滤器Angular内部提供了一组过滤器,我们可以把他嵌在html里,就和angular的指令特性一样,不过这里我们需要借助的是一个 “|” 管道操作符,和stream的管道流有几分相似。 Angular内部提供了一组常用的过滤器,分别为一下几种:1.currency 用两个小数位和一个货币符号来格式化原创 2017-04-10 16:55:59 · 628 阅读 · 0 评论 -
AngularJS 浅谈DI-依赖注入 $injector的神奇之处
前言依赖注入(DI)和控制反转(IOC)都是java Spring里经典的面向对象编程的法则来削减计算机程序的耦合问题的解决方案。 在Angular中,引入了DI的思想,DI是一种工具思想,而不是一种目的,它的目的是为了降低程序代码之间的耦合。Angular的启动方式先看一下angular究竟是怎么启动的。 在等待DOM解析完毕后,触发DOMContentLoaded事件时,angular会尝试原创 2017-05-05 23:12:29 · 1003 阅读 · 0 评论 -
js 解释器的尾调用优化机制 with 和 eval对性能的影响
前言今天浅谈一下js的解释器的尾调用优化机制,顺便提一下with 和 eval对其性能的影响。 eval和with语句都会对词法阶段的作用域产生影响。JavaScript引擎会在编译阶段进行数项的性能优化。其中有些优化依赖于能够根据代码的词法进行静态分析,并预先确定所有变量和函数的定义位置,才能在执行过程中快速找到标识符。—-《你不知道的javascript》js 的 解释器的解释过程要想知道原创 2017-05-12 23:56:21 · 1253 阅读 · 0 评论 -
Hash 与 Hashbang
前言SPA (Single Page Application) 在web 2.0时期成长迅速,当然SPA应用的流行自然离不开前端Route的兴起,现在流行的MVVM框架都是由前端控制路由分发,用AJAX 和 前端Route能带给用户很好的体验,当然,对于SEO也是一场莫大的灾难,因为AJAX 应用不会留下历史记录(history)。今天来浅谈一下因SPA应用而引发的Hash 和 HashbangHa原创 2017-06-13 15:26:56 · 3223 阅读 · 1 评论 -
浅析 Angular $q promise 回调异步嵌套解决机制
前言大概一个多个月忙着做公司开发的项目,做这个项目以来有些心得,但是感觉还是不如闷头学来的快,毕竟是实战,在这一个月以来,经历过各种适应布局,还算小有收获,不过最大的遗憾是荒废了angular的学习进度,所以趁着闲季,小补一下Angular ,也算对自己的一个巩固。一 、Promise的出现随着node.js的出现,异步逐渐被普及到web程序中来,随着异步带来的好处,也伴随着“回调噩梦”的出现,比如原创 2017-06-19 10:40:33 · 1800 阅读 · 0 评论 -
typescript ts 基本数据类型本质
最近Google 和 Microsoft 因Angular2 走的很近。 而其中的原因离不开Angular2的基础语言 : typescript。typescripttypescript(以下简称ts)和coffeescript一样,都是js的语法糖。因此,ts仅仅是js的超集而已,在实际的应用运行中,ts还是会被转换为js进行运行,多了一道转换,当然也就削减了一部分的性能。ts给我的感觉是不断的原创 2017-06-19 15:03:43 · 5339 阅读 · 0 评论 -
Angular2 ElementRef 实现低耦合高内聚 视图应用分离
为什么需要ElementRefAngular一直在做的一件事情就是降低视图层和应用层之间的耦合,在应用层直接操作DOM,会导致应用层和视图层之间强耦合,导致我们不能将应用运行在不同的环境中。比如令js能够实现多线程的webWorker,在webWorker中,却不能直接操作DOM,angular为我们封装了一个对象,叫做ElementRef,能够获取到视图层中的native对象,比如在浏览器中,na原创 2017-07-06 23:40:33 · 4548 阅读 · 0 评论 -
Js-JavaScript 观察者设计模式 Observer Pattern
在函数式编程中,观察者设计模式是非常有必要的,尽管在JS里到处都充斥着观察者模式(Observer Pattern),但我们仍然有必要去了解它。以便实现自己的观察者模式,用于更复杂的应用场景。其实要实现观察者模式实在是很简单。 现在我们回顾一下我们遇到过的观察者模式,最常见的应该是在前端领域中的DOM事件监听。JS允许我们用两种形式绑定DOM事件,一种为钩子捕获,另一种为事件监听,今天我们主要的关原创 2017-07-17 22:30:23 · 2874 阅读 · 0 评论 -
JS-Javascript 迭代器设计模式 Iterator pattern
这篇博文简短的提一下Iterator的设计模式,以及这种设计模式给我们带来什么样的好处。1.begin为了体现面向对象的特性(近年来的ES6为这方面做了很大的努力),此篇博文的语言编写基于typescript,当然也会附上原生js的书写方式。1.1迭代器给我们带来了什么样的好处迭代器可以使我们快速的遍历一个序列对象,一个良好的迭代器使我们不用了解该序列底层的结构,而只用关心拿到值之后的处理,并且迭代原创 2017-07-24 22:56:42 · 2415 阅读 · 0 评论 -
RxJS的秘密 Observable 可观察对象
前言最近因为Angular2了解到了RxJS这个东西,总的来说,RxJS的出现也是为了解决异步回调的,它针对于事件序列。RxJS是一个通过使用可观察序列来构建异步和基于事件的程序的库。它提供了一个核心类型:Observable、卫星类型(大概是这些类型均围绕于Observable,也就是Observable是根基,而这些是辅助类型):Observer、Schedulers、Subjects)和操作符原创 2017-07-26 11:39:41 · 4743 阅读 · 0 评论 -
RxJS Subject 主题 EventEmitter对象 组播Multicast
Subject主题什么是Subject?Subject是允许值被多播到多个观察者的一种特殊的Observable。然而纯粹的可观察对象是单播的(每一个订阅的观察者拥有单独的可观察对象的执行)。Subject就是一个可观察对象,只不过可以被多播至多个观察者。同时Subject也类似于EventEmitter:维护者着众多事件监听器的注册表。每一个Subject都是一个observable可观察对象,给原创 2017-07-29 22:21:47 · 3454 阅读 · 0 评论 -
web component 【Template】 创建自己的简单SPA应用
看到web component这么火爆,抽空写一篇关于template的博文,怎样创建一个简单的SPA应用。什么是Template在web component 中,template和它的名字一样,是一个模板标签,在它创建的上下文中,浏览器是不会去解析的,甚至不会去加载里面的任何资源,浏览器dom解析到template标签就跳过了,比如我们这样写 : <template> <img src='原创 2017-08-03 20:28:17 · 14132 阅读 · 0 评论