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求值后必须为一个函数,它会在运行时被调用,被装饰的声明信息做为参数传入。

TS简明教程(1)

本文是TS简明教程的第一篇,对TS做简要介绍、基础知识以及后续内容规划。

TypeScript是JavaScript的一个超集,支持 ECMAScript 6 标准。
TypeScript可以在任何浏览器、任何计算机和任何操作系统上运行,并且是开源的。
Typescript由微软开发,与C#出自同一人之手!

实现一个JS深拷贝函数

JS深拷贝概念并不新鲜,但是真正要真正理解原理还是有点难度的。这也是JS语言精粹之一吧。

例子

1
2
3
4
5
6
7
8
9
10
let a = {
name: 'demo',
age: 18
};

let b = a;
b.name = 'demo1';

console.log(a); // 输出 {name: "demo1", age: 18}
console.log(b); // 输出 {name: "demo1", age: 18}

因为JS对于对象的赋值使用的是浅拷贝,其中一个实例变量的赋值会影响到所有指向该对象变量

微信小程序数据字段大小写问题

这两天在开发微信小程序登录以及加解密的时候,因为数据大小写的问题被坑了一把。

场景

  1. 小程序调用wx.login时会获得code,传输给服务端可以得到openid,unionid(绑定了开放平台),session_key
Your browser is out-of-date!

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

×