JavaScript
文章平均质量分 57
Love_vermouth
这个作者很懒,什么都没留下…
展开
-
你不知道的JavaScript中卷 - 【值】
1、检测null// 检测 a 是不是 null(!a && typeof a === 'object'); // true2、函数不仅是对象,还有属性let a = function(b, c, d) {};a.length; // 33、typeof 一个未定义的变量,不报错,返回undefinedvar a;typeof a; // "und...原创 2019-11-15 18:29:13 · 270 阅读 · 0 评论 -
js跳转链接的几种方式
1、跳转链接 在当前窗口打开window.location.href="http://www.baidu.com"等价于 <a href="http://www.baidu.com"target="_self"></a>2、跳转链接 在新窗口打开window.open("http://www.baidu.com") 等价于 <a h...转载 2019-10-29 13:51:29 · 1437 阅读 · 0 评论 -
分析 “软绑定”
一段代码看了很久也搞不清楚,似懂非懂。打上断点,仔细琢磨,终于有一点豁然开朗的感觉。此处记录一些不容易想明白的地方,仅供分析用。 // 检查调用时的this,如果this绑定到全局对象或者undefined,那就把指定的默认对象obj绑定到this, // 否则不会修改this // 此段代码还支持可选的柯里化 if(!F...原创 2018-08-10 15:26:12 · 244 阅读 · 0 评论 -
JS学习系列 06 – 变量对象
原文: JS学习系列 06 – 变量对象 变量对象就是执行上下文和作用域链中间的桥梁。剧透一下,神秘的 this 就存在于执行上下文环境之中!当然,之后我会单独用几节来彻底讲明白 this 到底是什么(其实 this 很简单)。接下来,我们进入正文。1. 执行上下文包含什么一个执行上下文我们可以抽象的理解为对象(object)。每一个执行上下文都有一些属性(又称为上下文...转载 2018-07-21 15:59:36 · 220 阅读 · 0 评论 -
JS学习系列 05 – 执行上下文
原文: JS学习系列 05 – 执行上下文 在我们前面理解了作用域之后,“作用域链”这个概念就产生了。那么作用域链是什么意思,它又是怎么形成的,跟哪些概念有关系,这就是我接下来几章想和大家探讨的内容:执行上下文、变量对象和作用域链。根据顺序我们也可以看出来,想要理解作用域链,执行上下文是我们碰到的第一个坎。这一章我们就来讨论一下到底什么是执行上下文。1. 定义当 JS 引擎开...转载 2018-07-21 15:14:18 · 177 阅读 · 0 评论 -
JS学习系列 04 – 提升
原文: JS学习系列 04 – 提升 到目前为止,大家应该很熟悉作用域的概念了,以及根据声明的位置和方式将变量分配给作用域的相关原理了。函数作用域和块作用域的行为是一样的,可以总结为:任何声明在某个作用域内的变量,都将属于这个作用域。但是作用域同其中的变量声明出现的位置有某种微妙的关系,而这个细节就是我们这节要探讨的内容。1. 声明提升先看代码:a = 2;var ...转载 2018-07-21 14:54:20 · 200 阅读 · 0 评论 -
JavaScript 那些容易误解的代码
1、function test(m) { // 函数的参数按值传递 // m -> {k: 30} m = {v: 5}; // m 重写了, 不再跟外层的var m指向同一个地址 // m -> {v: 5}}var m = {k:30};test(m);alert(m.v); // undefined m -> {k:30...原创 2018-07-19 23:58:01 · 358 阅读 · 0 评论 -
JavaScript 的 this 大作战
1、this随运行时变化,谁调用this,this指向谁this.a = 80;var test = { a: 40, init: function(){ alert(this.a); // 40 }}test.init();// test调用, this指向test 2、this.a = 80;var test = {...原创 2018-07-19 22:50:36 · 244 阅读 · 0 评论 -
为什么要用promise
原文: 为什么要使用promise 起因大家都知道做前端开发最让人头痛的就是处理异步请求的情况,在请求到的成功回调函数里继续写函数,长此以往形成了回调地狱。function load() { $.ajax({ url: 'xxx.com', data: 'jsonp', success: function(res) { ...转载 2018-07-25 14:11:49 · 1327 阅读 · 0 评论 -
异步的发展过程
原文: 异步的发展过程 发展过程callback -> promise -> generator + co -> async + await(语法糖)异步是不支持try/catch的,try/catch只在同步中使用node支持异步// 1.txt -> 周杰伦// 2.txt -> 七里香// node里内置的fs方法const fs ...转载 2018-07-25 11:38:21 · 259 阅读 · 0 评论 -
【你不知道的JavaScript上卷】——作用域与闭包
原文: 【你不知道的JavaScript上卷】——作用域与闭包 JS语言万变不离其宗,其中最常用、最重要的也就是常用的几个大概念。数据类型、作用域、原型链、闭包、this指针、异步,不同的人理解不一样,不一样的书讲解的也不一样。但这本《你不知道的JavaScript》系列言简意赅,直指本质,值得反复阅读,每次阅读都感觉代码的设计实现精妙之处 一、浏览器如何运行代码? 我们每...转载 2018-07-24 19:50:18 · 223 阅读 · 0 评论 -
JavaScript异步编程
原文: JavaScript异步编程 #前言从我们一开始学习JavaScript的时候就听到过一段话:JS是单线程的,天生异步,适合IO密集型,不适合CPU密集型。但是,多数JavaScript开发者从来没有认真思考过自己程序中的异步到底是怎么出现的,以及为什么会出现,也没有探索过处理异步的其他方法。到目前为止,还有很多人坚持认为回调函数就完全够用了。但是,随着JavaScri...转载 2018-07-24 10:31:56 · 566 阅读 · 0 评论 -
逗号运算符
首先看个例子 var i,j,k; for( i = 0 , j = 0; i < 10 , j < 6; i++ , j++ ) { k = i+j; console.log('i='+i+',j='+j+',k的结果是:'+k); }控制台结果是:对上面的例子做一下修改 var i,j,k; for( i = 0 ...原创 2018-07-23 17:57:43 · 1776 阅读 · 0 评论 -
JavaScript 内存泄漏教程
原文: JavaScript 内存泄漏教程 一、什么是内存泄漏?程序的运行需要内存。只要程序提出要求,操作系统或者运行时(runtime)就必须供给内存。对于持续运行的服务进程(daemon),必须及时释放不再用到的内存。否则,内存占用越来越高,轻则影响系统性能,重则导致进程崩溃。不再用到的内存,没有及时释放,就叫做内存泄漏(memory leak)。有些语言(比如 ...转载 2018-07-23 16:44:48 · 168 阅读 · 0 评论 -
聊聊V8引擎的垃圾回收
原文: 聊聊V8引擎的垃圾回收 前言我们知道,JavaScript之所以能在浏览器环境和NodeJS环境运行,都是因为有V8引擎在幕后保驾护航。从编译、内存分配、运行以及垃圾回收等整个过程,都离不开它。 为什么要有垃圾回收在C语言和C++语言中,我们如果想要开辟一块堆内存的话,需要先计算需要内存的大小,然后自己通过malloc函数去手动分配,在用完之后,还要时刻记...转载 2018-07-23 16:24:00 · 483 阅读 · 0 评论 -
分析 “硬绑定” bind
// 这是MDN提供的一种bind(..)实现,代码进行了排版 // 代码会判断硬绑定函数是否被new调用,如果是的话就会使用新创建的this // 替换硬绑定的this if (!Function.prototype.bind1) { Function.prototype.bind1 = functi...原创 2018-08-10 16:57:07 · 544 阅读 · 0 评论 -
自定义@@iterator
@@iterator是一个可以返回迭代器对象的函数。调用迭代器的next()方法会返回形式为{value: .. , done: ..} 的值, value是当前的遍历值, done是一个布尔值, 表示遍历是否结束。var obj = { a: 2, b: 3}Object.defineProperty(obj, Symbol.iterator, { wri...原创 2018-08-11 11:52:16 · 2207 阅读 · 0 评论 -
【转】JavaScript——连续赋值与求值顺序(var a.x=a={n:2})
例题var a = { n: 1};var b = a;a.x = a = { n: 2 };alert(a.x); // undefinedalert(b.x); // [object Object]解析:a.x = a = { n: 2 };. 操作符的优先级比 = 高,= 从右向左解析,a.x ->这时候的a还是原来的a,a = { n: ...转载 2019-05-24 09:37:11 · 425 阅读 · 0 评论 -
axios禁止请求缓存
360浏览器“极速模式”采用Blink(Webkit)内核,具有更高的网页浏览速度和更好网页渲染效果。不存在自动缓存请求。“兼容模式”采用Trident内核(IE内核),会自动缓存请求。导致在进行一些表格操作(增删改查)时出现不刷新,重新登录才刷新的问题。使用vue axios,增加以下设置就可以了:const service = axios.create({ // ......原创 2018-11-20 16:32:05 · 17149 阅读 · 0 评论 -
ECMAScript 6 学习:Proxy篇
概述Proxy 用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种“元编程”(meta programming),即对编程语言进行编程。Proxy 可以理解成,在目标对象之前架设一层“拦截”,外界对该对象的访问,都必须先通过这层拦截,因此提供了一种机制,可以对外界的访问进行过滤和改写。Proxy 这个词的原意是代理,用在这里表示由它来“代理”某些操作,可以译为“代理器...原创 2018-09-26 11:35:10 · 224 阅读 · 0 评论 -
ECMAScript 6 学习:Reflect篇
目录Reflect.get(target, name, receiver)Reflect.set(target, name, value, receiver)Reflect.has(obj, name)Reflect.deleteProperty(obj, name)Reflect.construct(target, args) Reflect.getPrototypeOf...原创 2018-09-25 19:23:27 · 238 阅读 · 0 评论 -
Generator笔记
1 Generator 函数是一个状态机,封装了多个内部状态2 执行 Generator 函数会返回一个遍历器对象;返回的遍历器对象,可以依次遍历 Generator 函数内部的每一个状态3 特征function关键字与函数名之间有一个星号 函数体内部使用 yield 表达式,定义不同的内部状态(yield在英语里的意思就是“产出”)4 调用 Generator 函数后,该函数并不...原创 2018-09-25 17:12:11 · 203 阅读 · 0 评论 -
ECMAScript 6 学习:Promise篇
Promise是异步编程的一种解决方案。Promise对象,可以将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数。从0到1实现Promise 这篇文章详细地介绍了Promise的实现,值得细细研读。 1、Promise 新建后就会立即执行 2、调用 resolve 或 reject 并不会终结 Promise 的参数函数的执行// 调用resolv...原创 2018-09-25 15:54:12 · 246 阅读 · 0 评论 -
如何启用 eslint
使用vscode编辑器,在应用里安装了eslint,还需要全局安装eslint,项目里的配置才会生效。npm i eslint -g原创 2018-09-19 21:23:40 · 1605 阅读 · 0 评论 -
扩展运算符
概念扩展运算符(spread)是三个点(...)。它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列。console.log(...[1, 2, 3])// 1 2 3console.log(1, ...[2, 3, 4], 5)// 1 2 3 4 5 1 该运算符主要用于函数调用function push(array, ...items)...原创 2018-09-19 17:02:06 · 476 阅读 · 0 评论 -
Event Loop(事件机制)知多少
带你彻底弄懂Event Loop 这篇文章值得一读 在讲 Event Loop (事件循环)之前,我们来了解点 node 的东西,来帮助我们更加明白事件循环是干什么的 Node 解决了什么Web 服务器的瓶颈在于并发的用户量。Node 的首要目标是提供一种简单的,用于创建高性能服务器的开发工具。Node在处理高并发,I/O 密集场景有明显的性能优势高并发,是指在同一...转载 2018-09-03 15:13:25 · 696 阅读 · 0 评论 -
javascript设置时间区间
直接上代码util.getKindsOfTime = function () { let now = new Date(); //当前日期 let nowDayOfWeek = now.getDay(); //今天本周的第几天 let nowDay = now.getDate(); //当前日 let nowMonth = n...原创 2018-08-23 11:18:44 · 918 阅读 · 0 评论 -
javaScript之原型
[[prototype]] JavaScript中的对象有一个特殊的 [[prototype]] 内置属性,其实就是对于其他对象的引用。几乎所有的对象在创建时 [[prototype]] 属性都会被赋予一个非空的值。Object.create(..)会创建一个对象并把这个对象的 [[prototype]] 关联到指定的对象。var obj = { a: 2};var obj1 ...原创 2018-08-13 14:51:52 · 142 阅读 · 0 评论 -
JS学习系列 03 - 函数作用域和块作用域
原文:JS学习系列 03 - 函数作用域和块作用域 在 ES5 及之前版本,JavaScript 只拥有函数作用域,没有块作用域(with 和 try...catch 除外)。在 ES6 中,JS 引入了块作用域,{ } 内是单独的一个作用域。采用 let 或者 const 声明的变量会挟持所在块的作用域,也就是说,这声明关键字会将变量绑定到所在的任意作用域中(通常是 {...} 内部)。...转载 2018-07-23 15:13:38 · 222 阅读 · 0 评论 -
JS学习系列 02 - 词法作用域
原文: JS学习系列 02 - 词法作用域 1. 两种作用域“作用域”我们知道是一套规则,用来管理引擎如何在当前作用域以及嵌套的子作用域中根据标识符名称进行变量查找。作用域有两种主要工作模型:词法作用域和动态作用域。大多数语言采用的都是词法作用域,少数语言采用动态作用域(例如 Bash 脚本),这里我们主要讨论词法作用域。2. 词法大部分标准语言编译器的第一个工作阶段叫...转载 2018-07-23 14:14:50 · 163 阅读 · 0 评论 -
localStorage的使用
localStorage常用API名称 作用 clear 清空localStorage上存储的数据 getItem 读取数据 hasOwnProperty 检查localStorage上是否保存了变量x,需要传入x key 读取第i个数据的名字或称为键值(从0开始计数) length localStorage存储变量的个数 prope...转载 2018-07-17 18:02:44 · 239 阅读 · 0 评论 -
函数式编程总结
尾递归解决的是栈的记忆成本,更好防止堆栈溢出。递归在两种情况下会挂:一是没有结束条件;二是堆栈内存超过了最大限制。 1、柯里化柯里化是一种“预加载”函数的方法,通过传递较少的参数,得到一个已经记住了这些参数的新函数,某种意义上讲,这是一种对参数的“缓存”,是一种非常高效的编写函数的方法。 2、高阶函数函数当参数,把传入的函数做一个封装,然后返回这个封装函数,达到更...原创 2018-03-24 21:13:16 · 331 阅读 · 0 评论 -
[转]函数式编程入门教程
原文:函数式编程入门教程 你可能听说过函数式编程(Functional programming),甚至已经使用了一段时间。但是,你能说清楚,它到底是什么吗?网上搜索一下,你会轻松找到好多答案。与面向对象编程(Object-oriented programming)和过程式编程(Procedural programming)并列的编程范式。最主要的特征是,函数是第一等公民...转载 2017-07-19 15:07:33 · 296 阅读 · 0 评论 -
事件冒泡、捕获与委托
javascript与html的交互是通过事件来实现的。事件,就是文档或浏览器窗口中发生的一些特定的交互瞬间。可以使用侦听器(或处理程序)来预定事件,以便事件发生时执行相应的代码。响应某个事件的函数就是事件处理程序(事件侦听器)。事件流描述的是从页面中接收事件的顺序。事件冒泡、捕获与委托1、事件冒泡IE的事件流叫做事件冒泡(event bubbling)。这个事件从原始...原创 2018-03-19 17:52:14 · 239 阅读 · 0 评论 -
ES6标准入门笔记(一)
本文仅用来记录自己认为重要的知识点,详细请看 es6标准入门一、let命令1、声明变量,块级作用域;2、for循环的计数器,很适合使用let命令;3、不存在变量提升;4、如果区块中存在let和const命令,则这个区块对这些命令声明的变量从一开始就形成封闭作用域。只要在声明前使用这些变量,就会报错;“暂时性死区”(temporal dead zone,简称TDZ);5、不允许重复声明;二、cons...原创 2018-03-23 11:37:00 · 666 阅读 · 0 评论 -
正则表达式
本文讲述了基础的正则表达式。原创 2016-02-17 10:38:04 · 442 阅读 · 0 评论 -
鼠标事件mouseover、mouseenter、mouseout 和 mouseleave
鼠标事件原创 2017-07-31 10:09:59 · 230 阅读 · 0 评论 -
前端攻城狮知识体系
前端攻城狮知识体系,包括html、css、js三部分转载 2016-08-28 23:37:44 · 889 阅读 · 0 评论 -
服务器端解决JS跨域调用问题
服务器端解决JS跨域调用问题原创 2016-08-27 15:07:41 · 1118 阅读 · 0 评论 -
Javascript的this用法
本文讲述了javascript的this的用法。转载 2016-03-12 12:01:45 · 266 阅读 · 0 评论