[置顶] JavaScript对象、函数(你不知道的JavaScript)

一、对象 var obj = {}; obj[true] = "foo"; obj[3] = "bar"; obj[obj] = "baz"; obj["true"]; obj["3"]; obj["[object Object]"]; 二、数组也是对象 var ary = ["foo", 42, "bar"]; ary.baz = "baz"; ary.length; //3 ary.b...
阅读(2879) 评论(4)

[置顶] JavaScript中的this(你不知道的JavaScript)

JavaScript中的this,刚接触JavaScript时大家都在大肆渲染说其多么多么的灵巧重要,然而自己并不关心;随着自己对JavaScript一步步深入了解,突然恍然大悟,原来它真的很重要!所以,自己花费了大约2周的时间去查贴、翻阅之前读的书籍,将this的全貌展示如下。 一、this是什么--基于调用位置的上下文;调用位置不同,this值不同。 大家都JavaScript中this存...
阅读(4216) 评论(6)

[置顶] JavaScript作用域闭包(你不知道的JavaScript)

JavaScript闭包,是JS开发工程师必须深入了解的知识。3月份自己曾撰写博客《JavaScript闭包》,博客中只是简单阐述了闭包的工作过程和列举了几个示例,并没有去刨根问底,将其弄明白! 现在随着对JavaScript更深入的了解,也刚读完《你不知道的JavaScript(上卷)》这本书,所以乘机整理下,从底层和原理上去刨一下。 JavaScript并不具有动态作用域,它只有词法作...
阅读(3068) 评论(4)

[置顶] JavaScript词法作用域(你不知道的JavaScript)

JavaScript并不是传统的块级作用域,而是函数作用域! 一、作用域 1. JavaScript引擎在代码执行前会对其进行编译,在这个过程中,像var a = 2 这样的声明会被分解成两个独立的步骤: 第一步(编译阶段):var a 在其作用域中声明新变量。这会在最开始的阶段,也就是代码执行前进行。 第二步(运行阶段):a = 2 会查询变量a(LHS查询)并对其进行赋值。 2....
阅读(3343) 评论(0)

[置顶] JavaScript提升(你不知道的JavaScript)

最近,在读《你不知道的JavaScript(上卷)》这本书,书中详细阐述了JavaScript众多重要但经常被大家忽略的点,在此强烈推荐!!!书中,第4章讲述了“提升”,从示例出发讲述了变量和函数提升的过程,纠正了自己以前错误的理解(相信好多人理解都是错误)! 我们习惯将var a = 2;看做一个声明,而实际上JavaScript引擎不这么认为!下面几个示例让你彻底搞懂JavaScript中的...
阅读(3798) 评论(6)

debounce与throttle区别

在2011年,Twitter网站曾爆出一个问题:在主页往下滚动时,页面会变得缓慢以致没有响应。John Resig发表了一篇文章《 a blog post about the problem》指出直接在scroll事件上面绑定高消耗的事件是一个多么愚蠢的想法。现在项目中大家都会对类似的scroll或者resize事件都进行了节流控制,下述是我们经常用到,也是《JavaScript高级程序设计》- J...
阅读(98) 评论(0)

【HTTP】缓存

随着用户访问量越来越大,缓存变得越来越重要。HTTP文件缓存可以减少冗余数据的传输;缓解网络瓶颈;降低对原始服务器的请求;以及降低距离延迟。命中和未命中有了缓存,就可以保留第一条服务器响应的副本,后继请求就可以有缓存的副本来应对了。可以用已有的副本为某些达到缓存的请求提供服务,这些被称为缓存命中(cache hit)。HTTP没有为用户提供一种手段来区分响应是否缓存命中的,还是访问原始服务器得到的。...
阅读(107) 评论(0)

八种方式实现跨域请求

前端开发中我们经常会遇到跨域请求的情况,处理跨域请求方式很多,特整理如下: 浏览器的同源策略​ 提到跨域不能不先说一下”同源策略”。 ​ 何为同源?只有当协议、端口、和域名都相同的页面,则两个页面具有相同的源。只要网站的 协议名protocol、 主机host、 端口号port 这三个中的任意一个不同,网站间的数据请求与传输便构成了跨域调用,会受到同源策略的限制。 ​ 同源策略限制从...
阅读(1441) 评论(3)

【HTTP】客户端识别与cookie机制

​ 做数据产品时,我们会经常遇到用户隐私问题(如,禁止追踪)。在最新的Chrome浏览器中该选项已被默认选中设置=>显示高级设置=>随浏览流量一起发送”不跟踪”请求开启该选项后,请求头中会增加DNT:1的字段。 ​ 然而,大多数产品都希望提供一个类“免责声明”的文档,然后主动管理该DNT。所以我们只能借助其他方式(这里常用的方式是第三方Cookie,见文档Cookie章节)去实现,下述...
阅读(256) 评论(0)

定时任务高效触发

圆通处事,方能达到目的! 开发中我们经常会遇到一些需要定时来解决的业务场景。比如,有这样一个需求:“如果连续30s没有请求包(例如登录,消息,keepalive包),服务端就要将这个用户的状态置为离线”。轮询处理、定时处理、环形队列处理。...
阅读(1357) 评论(3)

[NodeJS]创建HTTP、HTTPS服务器与客户端

超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。其属于下图七层网路协议的“应用层”。 HTTP服务器创建HTTP服务器创建服务方式一:回调方式var server = http.createServer((request, re...
阅读(746) 评论(0)

编写高质量代码:改善JavaScript程序建议--面向对象编程

JavaScript是基于对象的弱类型语言,它是以对象为基础,以函数为模型,以原型为继承机制的开发模式。 建议1:参照Object构造体系分析prototype机制​ 对象(Object)是没有原型的,只有构造函数拥有原型,而构造类的实例对象能够通过prototype属性访问原型对象。 prototype表示类的原型,就是构造类拥有的原始成员。构造函数的prototype属性存储着一个引用对象指...
阅读(524) 评论(0)

人性的弱点

世事洞明皆学问,人情练达即文章。 写在前面​ 最近一直在追电视剧《人民的名义》,剧中无数次提及“当今社会是人情社会”,权力和金钱让太多的人变得“无情味”。时常和朋友讨论起来,我却一直坚信当今社会是“真情社会”。我们的父辈们的交往中,经常会说:“这人真精、这人真实诚”,说过就过了,只是一句感叹,下次该咋交往还咋交往。然而,今天呢?如果一个人和你处事过程中耍了心机、动用了小聪明,下次你还会和他打交道...
阅读(253) 评论(0)

ES6--Class、Module及常用特性

写到这里,ES6的所有语法基本已全部描述,有彩蛋、也有单纯的语法糖。里面大多数的语法也可用通过ES5去shim(除了Proxy)。在Node6+以上,几乎所有的ES6语法被支持,前端可通过Babel6工具进行转换。在使用ES6过程中,有几个很爽的小特性:(1)设置对象变量键值的语法(2)模板字符串(3)find/findIndex(4)扩展运算符(4)默认参数值...
阅读(1429) 评论(0)

Git撤销&回滚操作

开发过程中,你肯定会遇到这样的场景:场景一: 糟了,我刚把不想要的代码,commit到本地仓库中了,但是还没有做push操作! 场景二: 彻底完了,刚线上更新的代码出现问题了,需要还原这次提交的代码! 场景三: 刚才我发现之前的某次提交太愚蠢了,现在想要干掉它! 撤销上述场景一,在未进行git push前的所有操作,都是在“本地仓库”中执行的。我们暂且将“本地仓库”的代码还原操作叫做“撤...
阅读(2538) 评论(7)

DOM操作

DocumentFragement通常用来创建一个文档片段,然后将创建的DOM元素插入到文档片段中,最后把文档片段插入到DOM树中。在DOM树中,文档片段会被替换为它所有的子元素。因为文档片段存在于内存中,并不在DOM树中,所以将子元素插入到文档片段时不会引起页面重绘(reflow)(对元素位置和几何上的计算)。因此,使用文档片段DocumentFragement通常会起到优化性能的作用。...
阅读(1897) 评论(0)

ES6--Promise、Generator及async

ES6诞生以前,异步编程的方法,大概有如下四种:回调函数、事件监听、发布/订阅、Promise对象;ES6中,引入了Generator函数;ES7中,async更是将异步编程带入了一个全新的阶段。十四、Promise对象​ Promise,就是一个对象,用来传递异步操作的消息,避免了层层嵌套的回调函数。它代表了某个未来才会知道结果的事件(通常是一个异步操作),并且这个事件提供统一的API,可供进...
阅读(1660) 评论(0)

ES6--Set、Map、Symbol、Proxy及Reflect

九、Set和Map数据结构SetES6提供了新的数据结构Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。之前的博文曾阐述过使用ES5实现JavaScript数据结构-集合。new Set([iterable]);var items = new Set([1,2,3,4,5,5,5,5]); console.log(items.size); // 5 console.log(items)...
阅读(1303) 评论(0)

ES6--对象、函数的扩展

七、对象的扩展ES6中为对象属性和方法提供了简洁的方式,表达式作为属性名变成可能,并提供了name属性返回函数名。属性的简洁表示法const name = 'ligang'; const person = { name, sayName() { console.log(this.name); } };属性名表达式const propKey = 'name';...
阅读(401) 评论(0)

ES6--字符串、正则、数值、数组的扩展

三、字符串的扩展字符编码JavaScript内部,字符以UTF-16的格式储存,每个字符固定为2个字节。对于那些需要4个字节储存的字符(Unicode码点大于0xFFFF的字符),JavaScript会认为它们是两个字符。然而汉字往往就是4个字节存储,ES6之前处理起来有些麻烦。示例:字符编码var ChineseName = "李刚"; var EnglishName = "ligang"; Ch...
阅读(1151) 评论(1)
183条 共13页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:383060次
    • 积分:6051
    • 等级:
    • 排名:第4036名
    • 原创:182篇
    • 转载:0篇
    • 译文:0篇
    • 评论:149条
    博客专栏
    最新评论
    检测
    本站由Ptengine检测
    AB测试
    AB测试使用optimizely