暂时未有相关云产品技术能力~
前端,正在发布 ES6 系列
JavaScript专题系列第十篇,讲解如何从数组中查找指定元素,并且跟着 undersocre 实现 findIndex 和 findLastIndex、sortedIndex、indexOf 和 lastIndexOf
JavaScript 专题系列第九篇,讲解如何实现数组的扁平化,并解析 underscore 的 _.flatten 源码
JavaScritpt 专题系列第八篇,讲解多种方式求数组的最大值和最小值
JavaScritp 专题系列第七篇,讲解如何从零实现一个 jQuery 的 extend 函数
JavaScript 专题系列第六篇,讲解深浅拷贝的技巧和以及实现深浅拷贝的思路
JavaScript专题系列第五篇,讲解更加复杂的类型判断,比如 plainObject、空对象、类数组对象、Window对象、DOM 元素等
JavaScript专题系列第四篇,讲解类型判断的各种方法,并且跟着 jQuery 写一个 type 函数。
JavaScript 专题系列第三篇,讲解各种数组去重方法,并且跟着 underscore 写一个 unique API
JavaScript 专题系列第二篇,讲解节流,带你从零实现一个 underscore 的 throttle 函数
JavaScript 专题系列第一篇,讲解防抖,带你从零实现一个 underscore 的 debounce 函数
JavaScript 深入系列共计 15 篇已经正式完结,这是一个旨在帮助大家,其实也是帮助自己捋顺 JavaScript 底层知识的系列。重点讲解了如原型、作用域、执行上下文、变量对象、this、闭包、按值传递、call、apply、bind、new、继承等 JS 语言中的比较难懂的概念。
JavaScript深入系列第十五篇,讲解JavaScript各种继承方式和优缺点。
JavaScript深入系列第十四篇,讲解创建对象的各种方式,以及优缺点。
JavaScript深入系列第十三篇,讲解类数组对象与对象之间的相似与差异以及arguments的注意要点
JavaScript深入系列第十二篇,通过new的模拟实现,带大家揭开使用new获得构造函数实例的真相
JavaScript深入系列第十一篇,通过bind函数的模拟实现,带大家真正了解bind的特性
JavaScript深入系列第十篇,通过call和apply的模拟实现,带你揭开call和apply改变this的真相
JavaScript深入系列第九篇,除了按值传递、引用传递,还有第三种传递方式 —— 按共享传递
JavaScript深入系列第八篇,介绍理论上的闭包和实践上的闭包,以及从作用域链的角度解析经典的闭包题。
JavaScript深入系列第六篇,本篇我们追根溯源,从ECMAScript5规范解读this在函数调用时到底是如何确定的。
JavaScript深入系列第五篇,讲述作用链的创建过程,最后结合着变量对象,执行上下文栈,让我们一起捋一捋函数创建和执行的过程中到底发生了什么?
JavaScript深入系列第四篇,具体讲解执行上下文中的变量对象与活动对象。全局上下文下的变量对象是什么?函数上下文下的活动对象是如何分析和执行的?还有两个思考题帮你加深印象,快来看看吧!
JavaScript深入系列第三篇,讲解执行上下文栈的是如何执行的,也回答了第二篇中的略难的思考题。
作用域是程序源代码中定义变量的区域。 作用域规定了如何查找变量,也就是确定当前执行代码对变量的访问权限。 ECMAScript6之前只有全局作用域和函数作用域。 JavaScript采用词法作用域(lexical scoping),也就是静态作用域。
构造函数创建对象
## 前言 1. 这里的 "ES6" 泛指 ES5 之后的新语法 2. 这里的 "完全" 是指本文会不断更新 3. 这里的 "使用" 是指本文会展示很多 ES6 的使用场景 4. 这里的 "手册" 是指你可以参照本文将项目更多的重构为 ES6 语法 此外还要注意这里不一定就是正式进入规范的语法。 ## 1. let 和 const 在我们开发的时候,可能认为应该默认使
## 前言 在阅读 《ECMAScript 6 入门》的时候,零散的看到有私有变量的实现,所以在此总结一篇。 ## 1. 约定 ### 实现 ```js class Example { constructor() { this._private = 'private'; } getName() { return this._private }
## 前言 本篇我们重点介绍以下四种模块加载规范: 1. AMD 2. CMD 3. CommonJS 4. ES6 模块 最后再延伸讲下 Babel 的编译和 webpack 的打包原理。 ## require.js 在了解 AMD 规范之前,我们先来看看 require.js 的使用方式。 项目目录为: ``` * project/
## Decorator 装饰器主要用于: 1. 装饰类 2. 装饰方法或属性 ### 装饰类 ```js @annotation class MyClass { } function annotation(target) { target.annotated = true; } ``` ### 装饰方法或属性 ```js class
## 前言 在上一篇 [《 ES6 系列 Babel 是如何编译 Class 的(上)》](https://github.com/mqyqingfeng/Blog/issues/105),我们知道了 Babel 是如何编译 Class 的,这篇我们学习 Babel 是如何用 ES5 实现 Class 的继承。 ## ES5 寄生组合式继承 ```js function Pare
## 前言 我们或多或少都听过“数据绑定”这个词,“数据绑定”的关键在于监听数据的变化,可是对于这样一个对象:`var obj = {value: 1}`,我们该怎么知道 obj 发生了改变呢? ## definePropety ES5 提供了 Object.defineProperty 方法,该方法可以在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回这个对象。
## 前言 在了解 Babel 是如何编译 class 前,我们先看看 ES6 的 class 和 ES5 的构造函数是如何对应的。毕竟,ES6 的 class 可以看作一个语法糖,它的绝大部分功能,ES5 都可以做到,新的 class 写法只是让对象原型的写法更加清晰、更像面向对象编程的语法而已。 ## constructor ES6 中: ```js class Pe
## 前言 本文就是简单介绍下 Generator 语法编译后的代码。 ## Generator ```js function* helloWorldGenerator() { yield 'hello'; yield 'world'; return 'ending'; } ``` 我们打印下执行的结果: ```js var hw = hel
## 前言 本文就是简单介绍下 Async 语法编译后的代码。 ## Async ```js const fetchData = (data) => new Promise((resolve) => setTimeout(resolve, 1000, data + 1)) const fetchValue = async function () { var va
## 前言 我们以`查找指定目录下的最大文件`为例,感受从 回调函数 -> Promise -> Generator -> Async 异步处理方式的改变。 ## API 介绍 为了实现这个功能,我们需要用到几个 Nodejs 的 API,所以我们来简单介绍一下。 ### fs.readdir readdir 方法用于读取目录,返回一个包含文件和目录的数组
## async ES2017 标准引入了 async 函数,使得异步操作变得更加方便。 在异步处理上,async 函数就是 Generator 函数的语法糖。 举个例子: ```js // 使用 generator var fetch = require('node-fetch'); var co = require('co'); function* gen(
## 单个异步任务 ```js var fetch = require('node-fetch'); function* gen(){ var url = 'https://api.github.com/users/github'; var result = yield fetch(url); console.log(result.bio); } `
## 前言 Promise 的基本使用可以看阮一峰老师的 [《ECMAScript 6 入门》](http://es6.ruanyifeng.com/#docs/promise)。 我们来聊点其他的。 ## 回调 说起 Promise,我们一般都会从回调或者回调地狱说起,那么使用回调到底会导致哪些不好的地方呢? ### 1. 回调嵌套 使用回调,我们很有可能会将
我们先从 WeakMap 的特性说起,然后聊聊 WeakMap 的一些应用场景。