
JavaScript学习
文章平均质量分 66
enl0ve
有一年多没上了,最近打算开始回归写博客的状态了
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
深度剖析SyncHook
深度剖析SyncHook先写一个简单的例子class Dog{ constructor( this.hooks = { bark: new SyncHook() } )}此时bark成员就是一个标准的SyncHook对象了,那么这中间经历了什么呢?首先new SyncHook()返回一个hook实例,并且将hook实例的compile对象重写。//SyncHook.jsfunction SyncHook(args = [], n原创 2020-12-26 22:01:34 · 586 阅读 · 0 评论 -
Angular使用ui.router进行参数传递的多种方式
在Angular中使用ui.router进行参数传递的多种方式在实际工作中,我需要实现点击一个物体并重定向到物体的具体详情的页面的需求,为了实现这个功能,需要用到ui.router进行参数传递。在实现后,我将路由的参数传递实现的多种方式进行整理。查询参数(Query Parameters)查询参数将会被映射到UI Router的$stateParams中,可以在$stateProvide...原创 2020-01-09 14:28:02 · 740 阅读 · 0 评论 -
Blob对象
Blob对象什么是Blob对象Blob代表了一中不变的、原数据的类文件对象,它们可以当作text或者binary data或者转换为可读取的流(ReadableStream)。所以它的方法可以被用来处理数据。Blobs表示的不一定是JavaScript原生格式的数据。File接口基于Blob,继承了blob的功能并且拓展了它以支持使用用户系统上的文件。使用blobs为了从非...原创 2019-11-07 13:18:25 · 443 阅读 · 0 评论 -
FileReader详解
FileReader详解FileReader API提供了大量的方法来读取File对象或Blob对象,并且这些方法都是异步的。这意味着当程序读取文件时并不会发生阻塞,使用这些方法读取大文件将更加有用。简单地说,FileReader对象可以异步读取存储在开发者的计算机磁盘上的数据内容,可以使用File对象或Blob对象来指定所要处理的文件或数据。File对象提供了三种方式来读取文件,第一种文件是...原创 2019-11-06 19:58:28 · 4197 阅读 · 1 评论 -
Socket.io-client源码分析
Socket.io-client源码分析Socket.io-client source code analysis根据node_modlues中socket.io-client的文件结构,大概画了张UML图。从图片中可以清楚地看到模块中lib文件夹下各文件的依赖关系。Note:带箭头的虚线表示依赖关系,如socket.js需要依赖on.js ,则箭头指向on.js,即依赖对象指向被依赖...原创 2019-05-16 16:50:32 · 2272 阅读 · 0 评论 -
Object.assign的polyfill引起的思考
为了向下兼容浏览器或者在不同的浏览器上使用新的特性,我们可以使用polyfill。昨天MDN上看完了Object.assign的polyfill,今天趁着中午休息的时间复写了一下Object.assign的polyfill。 Object.defineProperty(Object, 'assign', { value: function(target, sources) ...原创 2019-05-21 13:50:01 · 1678 阅读 · 0 评论 -
scripts 1# use fs module to search keywords in files
scripts 1# use fs module to search keywords in files场景:固定的一组关键词, 需要判断关键字是否存在于文件中。思路:利用nodejs的fs模块获取指定路径下所有的以.json后缀名结尾的文件,读取内容并判断关键字是否存在于该文件中,如果存在,则返回该文件名。实现: const fs = require('fs'); co...原创 2019-05-15 15:18:43 · 203 阅读 · 0 评论 -
Google IO 2019整理之new features in javascript
Google I/O 2019观后整理之What's new in javascriptclass fields//nowclass IncreasingCounter{ constructor(){ this._count = 0; } get value() { console.log('Getting the current...原创 2019-05-14 22:11:38 · 321 阅读 · 0 评论 -
parseInt引起的思考
步行去公司的路上,我想着顺便刷刷知识点,然后看到了一条题目。 ['1', '2', '3'].map(parseInt) =>??我想了下选了[1, 2, 3], 结果显示错误 。正确答案是[1, NaN, NaN]。What?Why?迅速在MDN中搜索parseInt。parseInt函数接受两个参数,string, radix。其中radix指的是2-36之间的一个整数,...原创 2019-05-09 11:36:32 · 369 阅读 · 0 评论 -
Mixin模式
介绍mixin模式就是一些提供能够被一个或者一组子类简单继承功能的类,意在重用其功能。在面向对象的语言中,我们会通过接口继承的方式来实现功能的复用。但是在javascript中,我们没办法通过接口继承的方式,但是我们可以通过javascript特有的原型链属性,将功能引用复制到原型链上,达到功能的注入。代码实现 function Mixin(recClass, giveClas...原创 2019-05-16 17:51:50 · 378 阅读 · 0 评论 -
leetcode——数学
素数分解整除最大公约数最小公倍数生成素数序列最大公约数使用位操作和减法求解最大公约数进制转换7 进制16 进制26 进制阶乘统计阶乘尾部有多少个 0字符串加法减法二进制加法字符串加法相遇问题改变数组元素使所有的数组元素都相等解法 1解法 2多数投票问题数组中出现次数多于 n / 2 的元素其它平方数3 的 ...原创 2019-05-27 12:35:29 · 468 阅读 · 0 评论 -
leetcode——双指针
有序数组的 Two Sum两数平方和反转字符串中的元音字符回文字符串归并两个有序数组判断链表是否存在环最长子序列双指针主要用于遍历数组,两个指针指向不同的元素,从而协同完成任务。有序数组的 Two SumLeetcode :167. Two Sum II - Input array is sorted (Easy)Input: numbers={2, 7, 11, 15...原创 2019-05-28 17:49:26 · 526 阅读 · 0 评论 -
leetcode——二分查找
原理1. 正常实现2. 时间复杂度3. m 计算4. 返回值5. 变种例题1. 求开方2. 大于给定元素的最小元素3. 有序数组的 Single Element4. 第一个错误的版本5. 旋转数组的最小数字6. 查找区间原理1. 正常实现public int binarySearch(int[] nums, int key) { int l...原创 2019-05-29 18:02:39 · 441 阅读 · 0 评论 -
Vue的双向绑定原理及实现
前言学习vue也有一段时间了,对双向绑定原理的实现一直有所了解,但是并没有深入了解其实现原理。所以花了时间和查阅了一些资料,自己动手尝试实现了简单的vue的双向绑定。本文主要分为两部分:vue的数据双向绑定的实现原理实现简单版的vue的双向绑定,主要实现{{}}、v-model和事件指令的功能。Vue的数据双向绑定原理vue的数据绑定是通过数据劫持结合发布者和订阅者模式来实现的。...转载 2019-06-26 22:18:36 · 337 阅读 · 0 评论 -
async&await
JavaScript中异步从来都不简单,很长一段时间内, 我们都是使用的回调来实现。后来,我们可以使用promise,现在,我们可以使用async和await(以下简称异步函数)来实现异步。虽然异步函数的出现使得编写异步函数更加容易了,但是同样也存在陷阱,并且对于初学者并不是那么的友好。在这篇文章的两个部分中,我将和你们一起分享一切你需要知道的关于异步函数的知识。Asynchronous f...原创 2019-08-31 11:49:48 · 276 阅读 · 0 评论 -
Angularjs之UI.Router
最近正在开发的项目以AngularJS开发,目前开发已经告一段落,打算近期整理一下开发阶段中遇到的问题和个人感受。开发过程中接触了一些AngularJS的常用库,UI-ROUTER就是其中比较重要的路由库,就从这里开始写起来。UI-ROUTER官网上提供了3个简单的教程,本篇就以这3个教程结合开发中的实际使用进行总结。首先是熟悉的Hello World。<body ng-app='my...原创 2019-10-06 12:52:17 · 436 阅读 · 0 评论 -
async的实现分析
async/await 就是 Generator 的语法糖,使得异步操作变得更加方便。其中Generator的*换成了async关键字, yield换成了await关键字。Async函数与Generator相比,甜在哪里?async函数内置执行器,函数调用之后会自动执行,输出最后的结果。而Generator需要配合next和co模块一起使用。更好的语义, async表示函数里有异步操作...原创 2019-04-29 15:08:48 · 245 阅读 · 0 评论 -
async的实现分析
async/await 就是 Generator 的语法糖,使得异步操作变得更加方便。其中Generator的*换成了async关键字, yield换成了await关键字。Async函数与Generator相比,甜在哪里?async函数内置执行器,函数调用之后会自动执行,输出最后的结果。而Generator需要配合next和co模块一起使用。更好的语义, async表示函数里有异步操作...原创 2019-04-29 11:36:34 · 428 阅读 · 0 评论 -
《JS高级程序设计》--对象的属性和方法
在JS中所有的对象都由类Object继承而来。虽然一些专用的类,如内部的类String类或者用户自己定义的Complex类都定义了自己的方法和属性,但是所有对象,无论它的类是什么,都支持Object类定义的属性和方法。由于这些属性和方法的一般性,使得他们具有特殊的重要性。constructor属性从JS1.1开始,每个对象都具有constructor属性,它引用的是用来初始化该对象原创 2017-11-13 13:26:57 · 389 阅读 · 0 评论 -
《JS高级程序设计》--数组的创建
在JS1.1和其后的版本中,数组使用构造函数Array()和运算符new创建的。你可以有三种不同的方式来调用构造函数Array()。 1.无参调用var a = new array();用这种方法创建的是一个没有元素的空数组。2. 明确指定数组前n个元素的值var a = new Array(5,3,4,2,1,"tesign, tesing");3.传递一个数原创 2017-11-13 15:29:06 · 322 阅读 · 0 评论 -
重温AJAX
之前了解过AJAX,最近用的比较多,又重新温习一下,简单整理了一下,文中的英文注释全是小编自翻,可能不对或者不够好的地方,欢迎大家指正!/** * 什么是AJAX * 异步JAVASCRIPT和XML(其中的A表示async,异步的) * @authors enlove (you@example.org) * @date 2017-11-30 10:06:03 * @versi原创 2017-11-30 11:39:04 · 281 阅读 · 0 评论 -
《JS高级程序设计》--WEB浏览器中的JS
1.作为全局执行环境的Window对象web浏览器的主要任务是在一个窗口中显示HTML文档。在客户端JS中,表示HTML文档的是Document对象,Window对象代表显示该文档的窗口。虽然对于客户端JS来说,Document对象和Window对象都很重要,但是相比较而言,Window对象更重要一些。本质上山的原因是Window对象是客户端程序设计的全局对象。JS的每一个实现都有个全局对原创 2017-11-16 14:50:58 · 357 阅读 · 0 评论 -
AJAX处理服务端的json数据
/** * use function eval to parse the JSON * @authors enlove (you@example.org) * @date 2017-12-01 11:03:40 * @version $Id$ */attention: normally, we have two methods to parse the string of JS转载 2017-12-01 11:59:30 · 429 阅读 · 0 评论 -
goahead之GoAction实现
最近需要用到goahead服务器,因此花了一番时间对goahead服务器进行了简单的研究。网上都有对goahead服务器的移植进行讲解的博客,虽然讲的不够细节,但是对于启动服务器也已经是足够了,今天我这边博客主要是讲解一下我对goahead中goaction的理解和使用。如果有时间的话,我再出一个详细全面的goahead服务器的移植博客。在开始我们的博客之前,首先我们来讲一下什么是go原创 2017-12-11 19:16:08 · 4972 阅读 · 0 评论 -
JS实现链表
/** * 链表 * @authors Your Name (you@example.org) * @date 2018-02-09 10:52:40 * @version $Id$ *///链表存储有序的元素集合,但不同于数组,链表中的元素在内存中并不是连续放置的。每个元素//由一个存储元素本身的节点和一个指向下一个元素的引用(也成指针或者链接)组成。//相对于传统的数组,链表的一个好处在...原创 2018-02-09 15:55:05 · 386 阅读 · 0 评论 -
JS使用&&和||来优化代码
在javascript中经常遇到&&和||运算符的使用,下面我们看看它们的用法技巧:&&和||在JQuery源代码内尤为使用广泛,由于本人没有系统的学习js,所以只能粗略的自我理解出来,希望大家指点下。粗略理解如下:a() && b() :如果执行a()后返回true,则执行b()并返回b的值;如果执行a()后返回false,则整个表达式返回a()的...转载 2018-03-05 15:31:13 · 463 阅读 · 0 评论 -
underscoreJs中pluck函数的源码解析
9月份之后项目开始进入收尾期了,产品要上市,所以9月之后的两个月都在疯狂的改BUG。最近总算是基本结束了,只剩下扫尾的了。终于能静下心来好好研究技术了。最近遇到两个函数,分别是underscore中的where和pluck函数,在对多层次的Json对象中使用这两个函数时,出现了问题。当时的json对象是这样的结构:{A:1, B:2, C:{ C1:1, C2:2,...原创 2018-12-03 22:33:37 · 1241 阅读 · 0 评论 -
利用chromeDevTools的Performance面板进行性能分析调优
Chrome DevTools之PerformanceChrome DevTools中Performance面板可以帮助我们进行性能分析,使我们写出更加精悍的代码。下面是一段简单的代码。 var _status = { items:["None", "Java", "Python", "C++", "C&qu原创 2019-02-17 16:05:00 · 2929 阅读 · 0 评论 -
ES6 规范内容
ECMAScript 61.声明了let命令,与var不同的是,let声明的变量只在代码块内有效eg> var a = [];for(var i = 0; i < 10; i++){var c = i;a[i] = function(){console.log(c);}}a[6](); // out:9, var声明的c在整个遍历过程中都有效, ...原创 2019-02-13 22:11:08 · 970 阅读 · 0 评论 -
什么是Flux
什么是FluxFlux是由一群Facebook工程师提出的,它的名字是拉丁语的Flow。Flux的提出主要是针对现有前端MVC框架的局限总结出来的一套基于dispatcher的前端应用架构模式。按照MVC的命名习惯,他应该叫ADSV(Action Dispatcher Store View)。Flux的核心思想就是数据和逻辑永远单向流动。在Flux应用中,数据从action到disp...原创 2019-03-10 15:49:08 · 4949 阅读 · 0 评论 -
神奇的Jquery之query()
上周实现一个需求的过程中引发了一些对于jquery(selector, [context])函数的思考。这个需求是这样的,点击设置按钮然后在整个视区上弹出一个模态框,在这样的画面上获取模态框画面中一个带有特定ID的隐藏表单的值,使用$("#ID).val()进行取值,但是取值为undefined。我思考了一下,发现弹出框和整个视区是在同一层次上的。代码层次我简单用伪代码写下: <ht...原创 2019-03-25 22:06:45 · 2175 阅读 · 0 评论 -
React引用SVG的多种实现方式
序最近在尝试着用React仿写知乎,在写登录页面的时候,将SVG格式的知乎LOGO进行渲染时,却是没有成功,通过google&baidu,成功地解决了在React中引用SVG的问题。在此过程中,发现解决方法也是有这多种,现在我总结整理其中的两种方法,记录下来作为自己成长之路的一个铺路石。正文方法一:直接在使用svg标签话不多说,直接上代码 //Logo.js imp...原创 2019-03-22 22:47:24 · 18644 阅读 · 0 评论 -
React+mysql+express实现账号注册
React实现页面部分://login.jsimport React, { Component } from 'react';import PropTypes from 'prop-types';import {Button} from 'react-bootstrap';const styles = { zhihuLogo:{ stroke:"blue", ...原创 2019-04-05 17:47:56 · 2250 阅读 · 1 评论 -
<JS高级程序设计>--对象
今天,我们来一起看下JS中的对象。在JS中,对象是一种基本数据类型,而且它也是最重要的数据类型。 1.对象和属性的关系对象是一种符合数据类型。简单的来说,对象是一个无序的属性集合,每个属性都有自己的名字和值,存储在对象中的已命名的值既可以是数组和字符串这样的原始值,也可以是对象。2.对象的创建我们通过运算符new来创建对象。在这个运算符之后必须有用于初始化的构造函数。例如,我原创 2017-11-12 14:58:58 · 344 阅读 · 0 评论