我和JavaScript那点事
文章平均质量分 79
大笨儿钟
这个作者很懒,什么都没留下…
展开
-
JavaScript异步编程:Promise篇
前言异步编程作为JavaScript 中的核心内容,是必须要掌握的一个基础。在日常开发过程中,会有很多异步的场景。比如定时器,网络请求,事件监听等等… 而异步编程中让人诟病较多的一个点就是 callback hell...原创 2020-03-24 16:08:46 · 320 阅读 · 0 评论 -
谈谈JavaScript的闭包
前言闭包(closure)这个概念总是那么晦涩难懂,这篇文章希望结合自己的经验来说说这个概念。作用域在谈闭包之前,作用域这个概念是一定绕不开的。但是这里并不准备展开来详细说明他。简单总结几点。JavaScript中函数能形成一个作用域。在使用某个变量时,会在当前作用域查找;如果没有找到,则向外层作用域查找,直到全局作用域。也就是说,变量的搜索是从内到外,而不是从外到内。变量的生存周...原创 2020-03-17 16:19:23 · 272 阅读 · 0 评论 -
函数防抖和函数节流
前言函数防抖和节流是前端经常会用到的两个技巧。在处理用户交互时,我们可以通过这俩技巧来限制事件或者网络请求的触发频率。1. 防抖前端和服务端交互场景中,经常会有一个输入关键字查找结果的需求,如果不做处理,可能会导致大量的请求到达服务端,并且大部分请求是没有意义的。这个时候我们就可以使用防抖来优化一下。我们希望的是在某个时间间隔内,假如事件一直被触发,则不执行相关动作,直到某一个事件的触发间...原创 2020-03-17 13:24:21 · 169 阅读 · 0 评论 -
JavaScript 继承实现的几种方式
前言继承,作为复用代码的一种有效手段,在面向对象编程中有着重要意义。但是这门脚本语言的确不像某些静态语言那样提供了真正意义上的基于类实现的继承方式,而是采用了一种基于原型的继承。这里将说说在ES5时,使用JavaScript来实现继承的几种方式。在具体讲这些方式之前,先预先说清楚几个概念。函数:在JavaScript中,通常每一个函数上都会有一个prototype对象,假如我们通过new这个...原创 2020-03-16 14:42:15 · 241 阅读 · 0 评论 -
写一个简单的generator执行器
对generator不熟悉的可以先看下相关的基础资料https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Generator在早些时候,generator + promise 可以比较优雅的解决JS中较为头痛的回调嵌套问题,并且为了解决让 generator 能够自动执行的问题,出现了诸...原创 2019-12-16 13:15:43 · 310 阅读 · 0 评论 -
js检测字符的一些总结
今天偶然间被人抛出一个问题,说检测js中某个字符串出现的次数,刚刚开始想复杂了,还考虑排序树什么的,其实单单解决这个问题并不难,下面上代码:function getMostTimes(str){ var tmpArr=str.split(""); var obj={}; tmpArr.forEach(function(ele){ obj[ele]?obj[ele]+原创 2017-06-13 20:14:22 · 276 阅读 · 0 评论 -
js之自定义事件
js可以自己制定自定义事件,大致分为两种,DOM自定义事件和js自定义事件,下面上例子:1.DOM自定义比如我现在有一个需求,某一个按钮根据按下鼠标左键的时间不同来执行不同的响应,我们这里可以自己去定义事件来实现。html结构如下:<body><input class="btn" type="button" value="click"><script src="selfDomEvents.js原创 2017-06-14 20:24:14 · 594 阅读 · 0 评论 -
关于node中的this,module,exports
接触到node后对于node中可以自由使用module和exports感到很神奇,再加上自己碰到的一些问题,做了一些总结,先抛出自己的一些问题: 场景1:const redis=require("redis");var client=redis.createClient("6379","127.0.0.1");client.on("error", (error)=>{ console.l原创 2017-11-21 16:26:24 · 1476 阅读 · 1 评论 -
JavaScript中的宏任务和微任务
先来个例子如果能很快知道执行的顺序结果,那么说明你对这块的内容理解非常深刻。<div class="parent" data-spm="2.2.2.2"> <div class="child">123</div></div><script> var parent = document.g原创 2019-03-12 22:30:33 · 1484 阅读 · 0 评论 -
JS关于对象的安全性之扩展,密封,冻结
有时候我们写了一个js库,里面有一些核心对象,我们希望在开发过程中这个核心对象不被修改,这时候就要防止该对象被篡改。Object上有三个方法可以使用1.Object.preventExtensions(obj);var bar={"name":"kasol","age":25};Object.preventExtensions(bar);bar.test="test";console.log(原创 2017-06-08 23:21:42 · 584 阅读 · 0 评论 -
关于函数柯里化的一些理解
关于函数柯里化的例子网上有很多,我自己分享一下自己的一些看法和总结大家都学过数学,都应该记得下面这个熟悉的表达式 y=f(x); 没错,y是关于x的函数,当x确定的时候,y也就确定 再比如,z=f(x,y); z是关于x,y的函数,当其中一个x或者y确定的时候,就会变成 z=f(x)或者z=f(y)这样的关系先写一个简单的柯里化的例子:function curry(fn){ var a原创 2017-06-08 16:17:36 · 641 阅读 · 0 评论 -
函数技巧--惰性加载
有时候我们写的一段代码,用分支控制语句来决定程序的走向,有时候当运行环境一定的时候,if else 语句就是固定走某一个分支,这样一来,其他不会运行的分支就被浪费了,下面举个例子:function getXhr(){ var xhr; if("XMLHttpRequest" in window){ xhr=new XMLHttpRequest(); }else if("原创 2017-06-08 12:34:56 · 324 阅读 · 0 评论 -
利用HASH写的一个简单路由
单页应用有很多的优点,ng的路由功能就是一个典型例子,现在自己模拟一个简单的路由功能。1.可以通过监听hashchange来实现。2.通过window.history的API来实现。这里尝试先用hash来。html:html>lang="en"> charset="UTF-8"> href="myRouter.css" rel="s原创 2017-02-17 14:25:39 · 3187 阅读 · 0 评论 -
对Promise的一些小尝试
有时候需要同时处理多个ajax返回的值,只好把几个ajax写在回调里面,变得臃肿不堪,自己试了下promise的写法。/**/** * Created by kasol */function test(resolve,reject){ var num=Math.random()*5; console.log("test任务要延时 "+num+"秒"); s原创 2017-02-15 14:45:33 · 435 阅读 · 0 评论 -
那些我曾踩过的坑之类型显式/隐式转换
今天遇到了一个小问题,大致提取一下如下: var a="23";if(a==true){.....//code here}天真的以为会执行括号里面的内容,但是发现其实括号里返回的是false。后来发现这个表达式的过程是这样的:首先通过隐式转换把true转换成1,然后再把"23"转换成23,所以最后就是if(23==1),返回了false。其实可以直接if原创 2016-10-24 16:59:38 · 872 阅读 · 0 评论 -
标签内容的详细展示与收起
用css和简单的js实现了下元素标签的内容展示与收起。主要是white-space,word-wrap,text-overflow这一些css属性的运用。html>lang="en"> charset="UTF-8"> #d1{ height: 100px; width: 700px; backgroun原创 2017-02-25 21:54:54 · 641 阅读 · 0 评论 -
25 个 JavaScript 面试题
1、使用 typeof bar === "object" 判断 bar 是不是一个对象有神马潜在的弊端?如何避免这种弊端?使用 typeof 的弊端是显而易见的(这种弊端同使用 instanceof ):[javascript] view plain copy print?let obj = {}; let arr = []; console.l转载 2017-03-13 16:18:58 · 235 阅读 · 0 评论 -
关于对象的数据属性
javascript中对象是经常用到的东西,今天我来写一些对于创建对象时,定义属性时的一些特征值。这些特征值不能直接访问,下面举例说明。var a={ 'name':'kasol', 'age':18, 'hobby':'ES'};在定义了这个对象之后,该对象上有一个name属性,以这样的方式被创建时,name属性上有4个特征值,分别是[[Co原创 2017-04-12 22:10:37 · 342 阅读 · 0 评论 -
简易的lazyman实现
function LazyManHocks(name){ this.tasks=[]; var self=this; var fun=(function(n){ return function(){ var name=n; console.log("Hi,This is "+name);原创 2017-05-08 22:03:02 · 260 阅读 · 0 评论 -
js作用域安全的构造函数
js的函数非常常见,当一个函数被当成构造函数来用时,其中的this会指向该构造函数的实例,但是有时候可能会不小心直接执行该方法,这时候this会绑定到全局对象window上(非严格模式),下面上代码说明:function Parent(){ this.name='kasol'; this.age=25; this.getName=function(){ return thi原创 2017-06-08 02:16:31 · 303 阅读 · 0 评论 -
关于节点的一些认识
对于使用javascript操作节点,虽然简单,但是很多时候容易忘记其中的一些小细节,下面来总结一些。首先对于一个DOM元素,记为element,然后我用 document.childNodes获取返回的对象,当然实际上这是一个包含若干子节点的数组,很多时候我们会忽略一些实际存在的节点,比如下面的例子: JavaScript原创 2016-12-26 15:32:29 · 374 阅读 · 0 评论