ECMAScript 6入門類繼承筆記

2021-09-13 03:33:23 字數 1448 閱讀 8727

看類繼承前,先回顧建構函式怎麼實現物件的繼承的

function f() 

function son()

function inherit(s, f)

inherit(son, f);

let son = new son();

它實現了哪幾個功能:

用來extends和super關鍵字,看乙個簡單的繼承

class a 

}class b extends a

m()

}let b = new b();

同樣實現了那三點基本功能

b.__proto__ == b.prototype

b.__proto__.__proto__ === a.prototype

b.constructor === b

我認為:關鍵字extends實現了原型的繼承,以及constructor的修正;關鍵字super實現了父類this的繼承,這裡的super相當於a.prototype.constructor.call(this)

(1)子類的__proto__屬性,表示建構函式的繼承,總是指向父類。

(2)子類prototype屬性的__proto__屬性,表示方法的繼承,總是指向父類的prototype屬性。

類的繼承模式
class a 

class b

// b 的例項繼承 a 的例項

object.setprototypeof(b.prototype, a.prototype);

// b 繼承 a 的靜態屬性

object.setprototypeof(b, a);

const b = new b();

也是因為這種實現所以類能呼叫自己的靜態方法

class myarray extends array 

}var arr = new myarray();

arr[0] = 12;

arr.length // 1

arr.length = 0;

arr[0] // undefined

需要注意的是

es6 改變了object建構函式的行為,一旦發現object方法不是通過new object()這種形式呼叫,es6 規定object建構函式會忽略引數。
class newobj extends object

}var o = new newobj();

o.attr === true // false

傳入引數會無效的

EcmaScript 6 箭頭函式

es5 var total values.reduce function a,b 0 es6 var total values.reduce a,b a b,0 箭頭即乙個函式的簡化 es5 confetti btn click function event es6 confetti btn cli...

ECMAScript 6入門讀書筆記二

更加便利的從匿名物件或者陣列中,對變數進行賦值 基本樣式,右邊資料型別必須是可迭代的型別。let a 1,b 2,c 3 等價於 let a,b,c 1,2,3 對於let a,b,c 1,2,3 就是按照 這樣的模式一一對abc進行賦值 對於陣列型別的模式匹配取值還算簡單的,比較容易 設定預設值 ...

ECMAScript6 入門 物件的擴充套件

物件的擴充套件 1 屬性的簡潔表示 也就是說當物件的屬性和值同名時,可以縮寫為乙個 const foo bar const baz baz 等同於const baz 方法簡寫 const o 等同於const o 2 屬性名表示式 可以使用表示式定義物件的key 已知定義物件的屬性方法 方法一 ob...