看類繼承前,先回顧建構函式怎麼實現物件的繼承的
它實現了哪幾個功能: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();
我認為:關鍵字extends實現了原型的繼承,以及constructor的修正;關鍵字super實現了父類this的繼承,這裡的super相當於b
b.__proto__ == b.prototype
b.__proto__.__proto__ === a.prototype
b.constructor === b
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...