
JavaScript
张子虚
夫水之积也不厚,则其负大舟也无力。
展开
-
Promise.allSettled 垫片
想用Promise.allSettled,但又不想升级tsconfog.json下的lib属性,可以这样模拟原创 2021-11-10 17:10:38 · 993 阅读 · 0 评论 -
respondWith注意事项
respondWith拦截请求并允许Worker发送自定义响应。respondWith方法仅在worker域(WorkerGlobalScope)中有效使用Module Worker格式,直接从处理程序返回一个Response。如果fetch事件处理器没有调用respondWith方法,那么运行时将会将该事件传播到下一个注册为fetch事件的处理器中。因此,添加多个fetch事件的处理器是可行的,但是不推荐这样做。如果没有任何的fetch事件处理器来显式地调用respondWith方法,那么运原创 2022-04-06 17:32:35 · 596 阅读 · 0 评论 -
浅谈前端框架中的DSL
一、前言一个普通的web网站应用使用 html、xhml 等更具描述能力的 external dsl(domain-specific language)来描述界面,然后使用javascript代码来解决界面上的一些逻辑问题,使用css来描绘界面的样式。这些 external dsl 用于将数据配置跟代码逻辑分离开来一些现代语言加入了 internal dsl 这种东西,它赋予你在代码中写 dsl 的能力:比如jsx语法,vue语法。就是在javascript中使用类似于 html 的语法。前端编程界的原创 2021-05-14 11:44:45 · 3209 阅读 · 1 评论 -
从GIT系统设计认识编程领域中的‘抽象和分层’思想
从GIT系统设计认识编程领域中的‘抽象和分层’思想前言“抽象与分层,是计算与程序世界里最根本的思想。逻辑之始。”宇宙的终极图景人类无法认知,愚蠢是人类理智的最后一道防线 ——《论克苏鲁世界观中的认知哲学》毋庸置疑,现实世界是无比复杂的,以人类有限的脑力来认识和解构世界,无疑是需要一定的方法论的。在编程领域中,系统可以是无比复杂的。而人类为了开发和持续维护复杂系统,必然要做好优秀的架构设计,才能有效降低开发者的心智负担因此,抽象和分层是人类应对方法。抽象是对普遍性的表达,分层则是在恰当的原创 2021-04-25 16:24:59 · 262 阅读 · 0 评论 -
异步流程控制浅谈
bash脚本语言,基本上每个命令都是需要不定时等待的,所以是一种天然的异步流程控制语言“我们要寻找的就是如何组织我们的代码,来让其更加容易,极少冗余的表述我们的思维过程,同时这个过程本身又是容易被不断延展的,我称之为编织代码。”表面同步,内在异步的模型,才是高并发编程和高效率编程的最终方案。...原创 2021-03-12 12:00:57 · 614 阅读 · 0 评论 -
JavaScript Async/Await: 串行,并行和复杂流
JavaScript Async/Await: 串行,并行和复杂流如果你有ASP.NET MVC编程语言的从业经历,你应该很熟悉C#的关键字async/await。现在JavaScript 也有同样的特性了。在async/await关键字还没有出现在JavaScript时,我们通常使用回调函数和Promise来处理异步代码。async/await构建与Promise对象和非阻塞特性之上。它的强大之处在于提供了一种语法使其写异步代码如同同步代码一般体验。在这篇文章中,我们将遍历串行/链式和并行流,并使用as翻译 2021-02-02 20:05:48 · 2051 阅读 · 0 评论 -
JS语言下的有限状态机设计及实现
概念有限状态机(FSM)是一种用来进行对象行为建模的工具,其作用主要是描述对象在它的生命周期内所经历的状态序列,以及如何响应来自外界的各种事件。在计算机科学中,有限状态机被广泛用于建模应用行为、硬件电路系统设计、软件工程,编译器、网络协议、和计算与语言的研究。引用在开发某个应用时,需要根据该应用内部的状态的改变来执行一些逻辑代码,比如应用的生命周期特性就可用该功能实现,我们试着用JS语言实现一个有限状态机模型实现步骤假设现在已经有一个有限状态机,我们应该怎么使用它呢?先创建一个有限状态机实例原创 2020-10-31 22:15:31 · 1024 阅读 · 0 评论 -
使用JavaScript访问你的设备相机
各位好,在这篇博客中我将向你展示如何在一个网页上通过JavaScript, 且支持众多浏览器不需要额外的库访问当前的设备相机。如何访问相机我们使用JavaScript 的 Media Stream API去访问用户的相机(不止是在电脑上,手机上也是如此),这个API允许通过流去访问设备捕获的视频和音频。第一步是检测当前浏览器是否支持该API:if ('mediaDevices' in navigator && 'getUserMedia' in navigator.mediaDev翻译 2020-06-11 14:30:04 · 2437 阅读 · 0 评论 -
如果你讨厌一个人,就让它写一个日期范围差值算法吧
如果你讨厌一个人,就让它写一个日期范围差值算法吧引在我负责的应用中,有个功能点是是通过选择的日期范围计算出这个范围的日期的差值(计算时包含最后一天),比如:日期范围为2020-01-01 ~ 2021-02-28,则该日期范围的日期差值是1年2个月。这个功能点初始是其他同事做的,他的计算逻辑是使用getTime语法获取到两个日期的时间戳,拿到相差的毫秒数,一天有86400000毫秒,然后除以这...原创 2020-01-08 15:07:38 · 324 阅读 · 0 评论 -
从KaraTsuba算法谈JS的大数乘法(上)
引之前在某社区看到JKolmogorov 和 Karatsuba 关于乘法算法的故事,遂探索一番,发现其是关于高效大数乘法的算法。众所周知,一般的乘法的时间复杂度是O(n2),而 Karatsuba 提出的算法复杂度仅有O(Nlog23),社区中少有基于JS的算法实现,本文试图从Javascript语言出发谈论大数乘法。正分析所谓大数乘法(Multiplication algorithm)...原创 2019-12-29 23:48:34 · 705 阅读 · 1 评论 -
Vue表单生成器设计实践
前言在公司一直从事基于Vue框架后台应用的前端研发,而该类应用的页面有较多的通过表单交互来增删改查的操作,为了进行优雅的开发体验,也有感于项目当前的代码,遂封装一个更合适的表单生成器form-generator.vue。稍有从业经验的人都晓得,这类生成器在基于iview,ant-design这样的组件库下实现不算复杂,因此这里主要是阐述表单生成器的设计思路。当前项目的表单生成操作有以下问题:...原创 2019-11-20 21:01:13 · 2505 阅读 · 0 评论 -
设计一个简单的[JS]文本摘要算法
简单的JS文本摘要算法。原创 2019-10-29 23:28:36 · 1327 阅读 · 0 评论 -
在JS中复制对象
原文地址:Copying objects in Javascript, 原文作者:Victor Parmar渣翻译,有英文阅读能力的可以去原网址阅读,正文部分的括号内是译者的尝试补充说明自豪地采用谷歌翻译在这篇文章中,我将会讲到几种在JS中复制对象的方式,我们将会关注到浅复制和深复制。在开始之前,值得一提的是一些基础知识:JS中的对象只是对内存中某个位置的引用。这些引用是可以更改的。即...翻译 2019-01-16 16:53:24 · 22401 阅读 · 2 评论 -
实现一个分配随机红包的JS算法
前因之前面试的时候,面试官出题让说出生成随机红包的算法的思路,事后,感觉可以仔细研讨下,遂有此文。后果条件获取红包的份额不能超过一个阈值。随机红包思路随机出最小值0到红包奖池有效值乘以阈值的值,这样确保每次获取的值都在有效范围内,这里的阈值是0.618将随机后的值从红包奖池减去。确保红包奖池内都是有效值。重复操作n - 1次。将最后剩余的值直接推入结果数组...原创 2018-09-08 15:11:44 · 4131 阅读 · 0 评论 -
class类在实例化的constructor过程中可以使用其原型方法的
如题,今天特意测试了下类在执行constructor方法中是否可以使用其原型方法,测试文件内容如下:class Test { constructor() { const names = Object.getOwnPropertyNames(Test.prototype) console.log('names:', names) this....原创 2018-08-13 17:29:08 · 3410 阅读 · 0 评论 -
这题目有毒之干不过codewars的OJ系统(二)
kata<4kyu>Guess the Digits and Expression Description: Give you a multiplication arithmetic expression: ABC * CBA ------- = 39483Each character ...原创 2018-04-27 16:35:51 · 380 阅读 · 0 评论 -
JS排序算法初探(一)
前言排序实现冒泡排序选择排序插入排序归并排序快速排序排序效率结论前言这里是一些JavaScript版本的排序算法的探索,参考了以下文章:Javascript的数据结构与算法(四),分享一个排序可视化页面:用HTML5实现的各种排序算法的动画比较排序实现先定义一个交换函数:function swap (arr, idx1, idx2) { /...原创 2018-04-25 15:07:52 · 341 阅读 · 0 评论 -
Codewars-Javascript训练手册:正则表达式(上)
Autocomplete! Yay!(字符串自动补全)The autocomplete function will take in an input string and a dictionary array and return the values from the dictionary that start with the input string. If there are more th原创 2016-04-27 01:57:42 · 626 阅读 · 0 评论 -
这题目有毒之干不过codewars的OJ系统(一)
题目描述给定一个整数数组和一个求和的数值,函数返回数组中第一对元素求和值等于给定求和值的数组元素,返回形式为数组。 案例:sum_pairs([0, 0, -2, 3], 2)# there are no pairs of values that can be added to produce 2.== None/nil/undefined (Based on the language)su原创 2016-05-21 13:10:05 · 1113 阅读 · 0 评论 -
Codewars-Javascript训练手册:Date 对象
乌龟赛跑问题(Tortoise racing)两只蠢蠢的乌龟长跑比赛,年老的乌龟(老龟)跑的慢v1,领先跑了一段距离g,年青的乌龟(青龟)跑得快v2,在某个时间点后够追上老龟,那么问题来了:什么时间后青龟追上老龟。 Examples:race(720, 850, 70) => [0, 32, 18]race(80, 91, 37) => [3, 21, 49]写出实现这个功能的函数。 Solu原创 2016-04-26 21:49:31 · 708 阅读 · 0 评论 -
Codewars-Javascript训练手册:数组(上)
Directions Reduction题目描述(Description):write a function dirReduc which will take an array of strings and returns an array of strings with the needless directions removed (W<->E or S<->N side by side).原创 2016-04-20 13:28:35 · 1054 阅读 · 0 评论 -
Codewars-Javascript训练手册:字符串(上)
Recursive reverse string(递归反转字符串)stackoverflow解决方案:function reverse (str) { if (str === "") { return ""; } else { return reverse(str.substr(1)) + str.charAt(0); }}可改写为:retur原创 2016-04-19 01:21:25 · 782 阅读 · 0 评论 -
ES5中新增的Array方法详细说明
原文出处:来自张鑫旭-鑫空间-鑫生活的这篇文章(ES5中新增的Array方法详细说明)一、前言-索引ES5中新增的不少东西,了解之对我们写JavaScript会有不少帮助,比如数组这块,我们可能就不需要去有板有眼地for循环了。ES5中新增了写数组方法,如下:forEach (js v1.6)map (js v1.6)filter (js v1.6)some (js v1.6)转载 2016-04-27 20:22:35 · 396 阅读 · 0 评论 -
Codewars-Javascript训练手册:字符串(中)
这几天Codewars上的字符串训练好繁琐Detect Pangram:检测全字母句子还记得那个经典的英文句子吗:迅捷的棕色狐狸跳过了懒惰的狗狗身上(The quick brown fox jumps over the lazy dog),如题,这次的题目是检测给定的字符串是否为全字母句子,是返回true,否则,返回false。 解决方案:function isPangram(string){原创 2016-05-11 18:44:29 · 649 阅读 · 0 评论 -
前端开发学习笔记(一)
单选框始终选中一个:设置为相同的“name”值。 默认选中:checkedvar _bdhmProtocol = (("https:" == document.location.protocol) ? " https://" : " http://");unescape()函数可对通过 escape() 编码的字符串进行解码。/*对IE9加载html5的新特性*/<!--[if lt IE 9]原创 2016-04-18 14:04:54 · 542 阅读 · 0 评论 -
《Javascript秘密花园》学习笔记(终)
实践了许多代码后,回头再看《Javascript秘密花园》,又有一些收获,与诸君分享数组typeof运算符Value Class Type-------------------------------------"foo" String stringnew String("foo") String obje原创 2016-04-23 14:11:53 · 2180 阅读 · 0 评论 -
JS原始类型:数值的运用技巧
保留特定位数的小数有一些题目常常要求格式化数值,:比如保存几位小数等等。 1.使用Number.prototype.toFixed() 原生方法。该方法的参数为要保存的小数位数,有效范围为0到20,超出这个范围将抛出RangeError错误。此方法以四舍五入的方式处理多出的小数。 语法为: numObj.toFixed([digits])例子:var temp = 3.141592653;原创 2016-06-02 20:19:54 · 524 阅读 · 0 评论 -
编程助手JavaScript学习库-DOM笔记
声明:本文内容来源于编程助手APP的JavaScript学习库DOM可以理解成文档(HTML文档、XML文档和SVG文档)的编程接口。将新节点插在当前节点的最前面(即变成第一个子节点),可以使用当前节点的firstChild属性。parentElement.insertBefore(newElement, parentElement.firstChild);-clientWidth属性,clie原创 2016-08-05 19:09:56 · 418 阅读 · 0 评论 -
编程助手JavaScript学习库-面向对象编程笔记
声明:本文内容来源于编程助手APP的JavaScript学习库prototype对象的作用,就是定义所有实例对象共享的属性和方法,所以它也被称为实例对象的原型,而实例对象可以视作从prototype对象衍生出来的。构造函数是一个函数,同时也是一个对象,而所有构造函数都有prototype属性(其实是所有函数都有prototype属性),所以所有对象都有自己的prototype原型对象。JavaS原创 2016-08-05 18:34:11 · 447 阅读 · 0 评论 -
JS中常用到的数组工具方法
前言: 数组在ES6之前其原生的方法贴近工具的几乎没有,在这里贴出自己遇到的一些常用的数组方法。比如:去重,交集,etc去重function unique1(array){ var n = []; //一个新的临时数组 //遍历当前数组 for(var i = 0; i < array.length; i++){ //如果当前数组的第i已经保存进了临时数组,那么跳过,原创 2016-08-12 18:01:42 · 1578 阅读 · 0 评论 -
Javascript中的sort()语法浅谈
MDN中sort定义MDN中是这样介绍sort()函数的:sort() 方法对数组的元素做原地的排序,并返回这个数组。 sort 可能不是稳定的。默认按照字符串的Unicode码位点(code point)排序。 arr.sort([compareFunction])compareFunction 可选。用来指定按某种顺序进行排列的函数。如果省略,元素按照转换为的字符串的诸个字符的U原创 2016-04-29 19:16:45 · 6524 阅读 · 0 评论 -
FCC参阅笔记之编程知识点(上)
好玩的代码片段返回一个在min(包括min)和max(包括max)之间的随机数。Math.floor(Math.random() * (max - min + 1)) + min关于对象在 构造函数 中, this 指向被此 构造函数 创建出来的 对象 。有趣的算法如果给定的字符串是回文,返回true,反之,返回false。function p原创 2016-10-29 10:09:32 · 1044 阅读 · 0 评论 -
FCC参阅笔记之有趣的算法(上)
有趣的算法如果给定的字符串是回文,返回true,反之,返回false。function palindrome(str) { str = str.replace(/[^A-Za-z0-9]/g, '').toLowerCase(); var x = str.split(''); var t = x.every(function(v,i){ return v == ...原创 2016-11-20 19:06:22 · 942 阅读 · 0 评论 -
JavaScript与Java的关系(联系与区别)
JavaScript和Java是两种不一样的语言,但是它们之间存在联系。背景方面Javascript(1995年,Netscape公司雇佣了程序员Brendan Eich开发这种网页脚本语言)最初名字叫做Mocha,1995年9月改为LiveScript。12月,Netscape公司与Sun公司(Java语言的发明者和所有者)达成协议,后者允许将这种语言叫做JavaScript。这样一来,Netsc原创 2016-04-26 15:22:22 · 15169 阅读 · 1 评论