搞懂JS闭包

闭包(Closure)是JS比较难懂的一个东西,或者说别人说的难以理解, 本文将以简洁的语言+面试题来深入浅出地介绍一下。

作用域和作用域链

在将闭包之前,需要先讲一下作用域。

JS中有全局作用域和局部作用域两种。

HTTPS协议是如何保证安全的?

相信大家对于HTTPS协议都不陌生,但是应该存在以下疑问:

  1. HTTPS协议到底是如何运作的?

Javavscript基础——this指向

本文研究一下Javascript的this指向。

Javascript的this指向问题,有些人可能觉得很简单,有些人却觉得扑朔迷离,看完本文之后相应会对this的掌握有一个直观的判断,而不是”开局全靠猜”。

敲黑板

Javavscript基础——原型和原型链

本文研究一下Javascript的核心基础——原型链和继承。

对于使用过基于类的语言(如Java或C#)的人来说,Javascript的继承有点难以搞懂,因为它本身没有class这种东西。(ES6中引入了class关键字,看上去也像传统的OOP语言,但是那只是语法糖,底层还是基于原型)。

原型链

MDN上对于原型链的解释:

搞懂JS变量提升

本文讲解Javascript变量提升引起的问题以及如何规避。

问题

今天看到一道有意思的面试题,考察的还真是JS的基本功,题目如下:

1
2
3
4
5
6
7
8
9
10
var name = "world";

(function(){
if(typeof name === "undefined") {
var name = "Jack";
console.log("Hello " + name);
} else {
console.log("Hello " + name);
}
}());

TS简明教程(4)

本文是TS简明教程的第四篇,讲解装饰器。

装饰器

装饰器是一种特殊类型的声明,它能够被附加到类声明,方法,访问符,属性或参数上。 装饰器使用@expression这种形式,expression必须是一个函数,它会在运行时被调用,被装饰的声明信息做为参数传入。

TS简明教程(3)

本文是TS简明教程的第三篇,讲解泛型。

泛型

泛型程序设计(generic programming)是程序设计语言的一种风格或范式。泛型允许程序员在强类型程序设计语言中编写代码时使用一些以后才指定的类型,在实例化时作为参数指明这些类型。

TS简明教程(2)

本文是TS简明教程的第二篇,讲解面向对象相关的知识。

传统JS使用函数原型链进行集成,在ES6出现了class关键,JS也能使用传统OOP的方式进行继承,但是还是存在一定的局限性,在TS中,OOP已经和传统语言差不多。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Parent {
name: string;
age: number;

constructor(name: string, age: number) {
this.name = name;
this.age = age;
}

say() {
return `name: ${this.name}, age: ${this.age}`;
}
}

const parent = new Parent();
parent.say();

手把手从零开始小程序单元测试(附避坑指南以及源码跟踪)

单元测试是一个老生常谈的话题,基于Web/NodeJs环境的测试框架、测试教程数不胜数,也趋于成熟了。但是对于微信小程序的单元测试,目前还是处于起步状态,这两天在研究微信小程序的测试,也遇到了一些坑,在这里记录一下,希望给看到本文的小伙伴带来一点帮助,少走一些弯路。

demo地址

https://github.com/xialeistudio/miniprogram-unit-test-demo

关键依赖版本

本文写作时相关依赖版本如下(版本不同,源码行数可能不同):

使用Typescript装饰器来劫持React组件

最近在捣鼓Typescript的装饰器,NodeJs项目的装饰器比较好理解,但是React项目的装饰器由于有JSX,走了一点弯路,但是总之来说是新技能get

typescript对装饰器的说明

装饰器是一种特殊类型的声明,它能够被附加到类声明,方法, 访问符,属性或参数上。 装饰器使用 @expression这种形式,expression求值后必须为一个函数,它会在运行时被调用,被装饰的声明信息做为参数传入。

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×