JavaScript中的__proto__、[[prototype]]和prototype | GCidea's blog

作者:JerryXia | 发表于 , 阅读 (25)
__proto__与[[prototype]]相关介绍  待续。
一张图分析三者的关系
一系列案例分析12345function Foo(){  console.log(1);}var a = new Foo();console.log(a.prototype === Foo.prototype);       //false12345function Foo(){  console.log(1);}var a = new Foo();console.log(a.__proto__ === Foo.prototype);       //true12345function Foo(){  console.log(1);}var a = new Foo();console.log(a.prototype);       //undefined12345function Foo(){  console.log(1);}var a = new Foo();console.log(a.__proto__);       //object{}123456function Foo(){  co...阅读全文

使用WebStorm创建webpack工作流的前端项目 | GCidea's blog

作者:JerryXia | 发表于 , 阅读 (25)
目录1. 前言2. JS模块化编程相关背景3. 什么是webpack?4. webpack的安装5. webpack的使用5.1. 简单示例5.2. 规范使用5.2.1. 项目结构5.2.2. 文件配置5.2.3. 使用loaders5.2.4. 安装其他可能需要的库5.2.5. 修改app.js文件(ES6语法+jquery库)5.2.6. 编辑index.html文件5.2.7. 重新打包5.2.8. 访问index.html5.2.9. 使用plugins6. webpack中的重要工具:webpack-dev-server6.1. 安装webpack-dev-server6.2. 启动webpack-dev-server6.3. 指定content base6.4. 自动刷新6.4.1. iframe模式6.4.2. inline模式7. 模块热替换 Hot Module Replacement 的应用
前言  webpack是一款极为灵活的前端模块打包构建工具。其诞生和流行主要是由于以下这几个发展趋势:
为了完成更加复杂的交互逻辑,一个网页中使用的js代码数量越来越多;即...阅读全文

关于JavaScript生成器generator和yield的一些理解 | GCidea's blog

作者:JerryXia | 发表于 , 阅读 (30)
Generator函数定义  function* 声明(function关键字后跟一个星号)定义一个generator(生成器)函数,返回一个Generator对象。
语法function* name([param[, param[, ... param]]]) { statements }其中:
name函数名param传入函数的参数名,一个函数至多可有255个参数。statements函数的主体注:ES6没有规定,function关键字与函数名之间的星号必须写在哪个位置,因此下面的写法都正确,但是还是推荐上述写法。123function * name([param[, param[, ... param]]]) { statements }function *name([param[, param[, ... param]]]) { statements }function*name([param[, param[, ... param]]]) { statements }
描述  生成器是一种可以从中退出并在之后重新进入的函数。生成器的环境(绑定的变量)会在每次执行后被保存...阅读全文

Base64编码探究 | GCidea's blog

作者:JerryXia | 发表于 , 阅读 (21)
目录1. 概念2. 官方规范3. Base64字母表4. 原理5. 应用6. JavaScript实现
概念  Base64编码是网络传输中的一种常见编码方式。可用于传输任意的8bit(字节Byte)数据,经过编码后的数据不是直接可读的,但也由此保证了一定的安全性和很好的可移植性。这种编解码的算法十分简单,编码后的数据大小仅增加三分之一左右(原因后续讲到),因而不会对传输造成过大压力。  我们需要明确的概念是,Base64编码本质上是将二进制数据编码为文本字符。而这些二进制数据的来源则可能有很多,比如:
本来就是二进制数据本来是英文字母或数字,则有对应的ASCII编码,ASCII表一般会表示为十进制和十六进制的值,自然也有对应的二进制值本来是汉字,可能是多种编码得到的,比如采用UTF-8编码得到,则该汉字的UTF-8编码的值可以用二进制表示…上述各种类型的文本转换为二进制后,就可以使用Base64进行编码了。
官方规范  Base64编码是作为MIME多用途互联网邮件扩展标准的一部分进行开发的。MIME RFC 2045的6.8节详细介绍了这种编码方式,参见http://www....阅读全文

React的state初始化及其在dva框架中的具体表现 | GCidea's blog

作者:JerryXia | 发表于 , 阅读 (21)
目录1. 前言2. 使用dva框架开发时遇到的一个问题2.1. 问题现象描述2.2. 问题分析2.3. 问题解决3. 该问题的另一个规范化解决方案-在service层做好数据adaptor转换
前言  本篇结合在使用dva框架进行React应用开发过程中遇到的问题,简要分析React中state的机制和Redux对state的状态管理。
使用dva框架开发时遇到的一个问题  关于dva框架的基本结构和开发模式,在之前的文章中已经有所提及,见React开发框架Dva.js项目结构简单小结。下面的描述直接基于框架中的概念。
问题现象描述确定接口所需数据结构  在进行一个应用模块的开发,与后端确立的数据接口返回数据项格式如下:123456789101112131415161718192021222324252627282930313233343536373839404142{  "status": 200,  "message": "查询成功",  "data": {    "advertisement_index_top":[      {        "id": "99",   ...阅读全文