# 原型链及继承的理解
##### 定义函数
```js
function A(name) {
// 构造内容(构造函数)
this.name = name;
/*
// 也支持定义方法。但为了性能,不建议在构造里定义方法
this.fn = function(parmas){
// your code
}
*/
}
```
```js
// 原型链
A.prototype.changeName = function(name) {
this.name = name;
}
```
```js
// 静态属性
A.staticPF = 'static12345';
```
##### 继承
###### 继承构造函数
```js
function B(name) {
// B 继承 A 的构造函数 也可用apply
A.call(this, name);
}
// console.log(B)
var b = new B('ccc');
console.log(b.name); // => ccc
```
###### 继承静态属性
```js
// B 继承 A 的静态属性,查找流程如下
// B.staticPF = >B.__proto__.staticPF => A.staticPF;
B.__proto__ = A;
console.log(B.staticPF); // => static12345
```
###### 继承原型链
```js
var b = new B('ccc');
// B 继承 A 的原型链, 3种方式,推荐第3种
// B.prototype = A.prototype; // 需要前置在b对象实例化前
// b.__proto__ = A.prototype;
// B.prototype.__proto__ = A.prototype;
B.prototype.__proto__ = A.prototype;
b.changeName('ddd') // b实例最终继续了A的changeName方法
console.log(b.name); // => ddd
```
- [分享]微信小程序入门与实战
- 学习大纲
- 关于学习的一些常见问题
- 第一周
- 每周作业
- 玩练作业
- 知识点
- 正确设置PORT端口(windows/mac)
- 发布npm包
- 第二周
- 每周作业
- [作业一 (通关作业)](第二周/作业一 (通关作业).md)
- 作业二 (通关作业)
- 作业三 (通关作业)
- 作业四(可选)
- 作业五(可选)
- 知识点
- 原型链及继承的理解
- 第三周
- 每周作业
- 作业一 (通关作业)
- 作业二 (通关作业)
- 作业三 (通关作业)
- 作业四(可选)
- 知识点
- 正则表达式常用方法
- promise用法
- 常用正则表达式大全
- 第四周
- 每周作业
- 玩练作业
- 知识点
- 第五周
- 每周作业
- 作业一(通关作业)
- 作业二 (通关作业)
- 作业三(玩练作业)
- 知识点
- 第六周
- 每周作业
- [作业一(通关作业)](第六周/作业一(通关作业).md)
- 知识点
- 第七周
- 每周作业
- 作业一(玩练)
- 作业二(玩练)
- 作业三(通关)
- 作业四(通关)
- 知识点
- 第八周
- 每周作业
- 作业一(玩练)
- 作业二(玩练)
- 作业三(通关)
- 知识点
- 第九周
- 每周作业
- 作业一(玩练)
- 作业二(玩练)
- 作业三(玩练)
- 作业四(通关)
- 知识点
- 第十周
- 每周作业
- 作业一(玩练)
- 知识点