# 原型鏈及繼承的理解
##### 定義函數
```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)
- 知識點
- 第七周
- 每周作業
- 作業一(玩練)
- 作業二(玩練)
- 作業三(通關)
- 作業四(通關)
- 知識點
- 第八周
- 每周作業
- 作業一(玩練)
- 作業二(玩練)
- 作業三(通關)
- 知識點
- 第九周
- 每周作業
- 作業一(玩練)
- 作業二(玩練)
- 作業三(玩練)
- 作業四(通關)
- 知識點
- 第十周
- 每周作業
- 作業一(玩練)
- 知識點