标签:: JavaScript

es6(二) 之用 es5 理解 es6 的 class

  es6 新特性 class 能够像其他面向对象的语言那样创建类并实现类之间的继承,然而实际上底层的实现依然是基于原型链的,因此完全可以将 es6 的 class 翻译成 es5 的原生 function 来理解。 声明一个类12345// class 实现class A {}// function 实现function A() {}

最大宽高限制下的自适应比例尺寸计算

  今天在做图片涂鸦的时候遇到了一个图片尺寸自适应的问题,即给一个有最大宽度跟最大高度限制的盒子,要将一张大小不确定的图片在保持宽高比的情况下完全放入盒子中,即既要图片能完全放入盒子中又要图片不变形。   其涉及到的主要是图片宽高的重新计算,抽象一下就是一个算法,即随意给定四个正数(x1, y1, x2, y2),求 x3 以及 y3,其需要满足的条件如下:

js 实现 call & apply & bind

  最近发现某条的前端面试很喜欢让人手写实现 bind。实际上,只要对原生 js 够熟悉的话,别说是实现 bind,连 call 还有 apply 的实现也是很简单的,本篇文章主要是记录下本人实现的代码。 (一) 手写实现 call1234567Function.prototype.myCall = function (context) { let args = [

实现 element-ui 按需加载

  很多人在前端项目打包时经常会遇到打包出来的体积过大的问题,过大的资源体积会导致页面加载速度缓慢。在使用 element-ui 的时候如果单纯引入整个 element-ui 库,就会导致打包体积过大的问题。12345678910111213141516// 项目入口比如 main.js 中import Vue from 'vue'import App from './App'

windows 下解决 gyp ERR

  在 windows 上执行 npm 安装但凡涉及到 canvas,比如我最近就在使用一个 canvas 库 Fabric,就经常会报 gyp ERR。所以我的解决思路是查找安装 canvas 失败的解决方法,只要解决了 canvas 安装失败的问题,就可以解决 gyp ERR。 解决步骤  (1)npm i -g node-gyp  &ems

详解 JavaScript 严格模式

  ECMAScript 5 定义了严格模式,可以使 JavaScript 更清晰,减少不安全的功能,并提供更多的警告和有逻辑的行为。同时也是为了提高编译器效率,增加运行速度,为未来新版本的 Javascript 做好铺垫。 (一) 切换到严格模式的方法:  (1)在 JavaScript 文件顶部或者 script 元素的顶部键入 ‘use strict’

JavaScript 中 new 操作符的执行顺序

  以前在学习 JavaScript 构造函数的时候,并没有深入地去研究 new 操作符究竟做了什么事情,也没有深入了解构造返回值的规则,本篇文章详细解释了这两个问题。 new 操作符做了什么???  用 new 调用构造函数时 new 的操作顺序: (一)创建一个新对象 X; (二)将新对象 X 的属性 proto 指向构造函数的 prototype 指

全双工通信 & WebSocket

  随着互联网的迅速发展,单工以及半双工的通信方式已经无法满足日益复杂的业务需求了,对全双工通信的依赖越来越重。而 WebSocket 协议便是全双工通信协议中的一个典型代表。 单工、半双工、全双工  数据通信中,数据在线路上的传送方式可以分为单工通信、半双工通信和全双工通信三种。 单工  所谓单工通信,是指消息只能单方向传输的工作方式。