學習記錄 ES6(2020 12 07)

2021-10-11 15:28:26 字數 2875 閱讀 7687

class

person

,年齡:$`

;}}/*say() ,年齡:$`;

}*/}let p =

newperson

('張三',23

);let str = p.

say();

console.

log(str)

;<

/script>

結果:

var p =

newperson()

;console.

log(p.__proto__ === person.prototype)

* 結果:true

* 類和建構函式一樣,例項物件的__proto__指向的是類或建構函式的prototype物件

class

point

}class

colorpoint

extends

point

}var cp =

newcolorpoint(10

,20,'red'

);

* 結果:報錯

* 原因:

* 子類的this關鍵字根據super方法建立,必須先有super方法,this關鍵字才能使用,否則就會報錯。

* 子類沒有自己的this物件,需要繼承父類的this物件再新增東西

* 改正:替換子類constructor中super和this語句的順序

class

colorpoint

extends

point

}

class

parent

mymethod

(msg)

}class

child

extends

parent

mymethod

(msg)

}child.

mymethod(1

);// static 1

var child =

newchild()

;child.

mymethod(2

);// instance 2

* 結果:

*static

1* instance 2

* 子類呼叫父類的static方法只能在靜態函式中呼叫

* child.

mymethod(1

);通過子類名呼叫,執行的是子類中的靜態方法,在子類的靜態方法中通過super關鍵字呼叫父類中的靜態方法

* child.

mymethod(2

);通過例項物件呼叫,執行的是子類中的普通方法,在子類的普通方法中通過super關鍵字呼叫父類中的普通方法

class

animal

}

**:

class

animal

}class

catextends

animal

say()}

let c =

newcat

('橘貓');

console.

log(c.

say())

;<

/script>

var kitty =

newcat

('kitty');

var doraemon =

newcat

('哆啦a夢');

if((new

cat(

'x')

instanceof

animal

)&& kitty && kitty.name ===

'kitty'

&& kitty.say &&

typeof kitty.say ===

'function'

&& kitty.

say(

)===

'hello,kitty!'

&& kitty.say === doraemon.say)

else

* 結果:測試失敗!

*new

cat(

'x')

instanceof

animal:判斷cat類的例項物件是否為animal類的例項物件,true,子類例項物件的構建,是基於父類例項進行加工。

* kitty:var宣告的變數,儲存了cat類的例項物件,傳遞引數'kitty',不為undefined

*typeof kitty.say ===

'function':判斷kitty.say儲存的資料型別

* kitty.

say(

)===

'hello,kitty!':判斷say方法執行的結果,上面的返回'hello, ***',與'hello,kitty'不相等,false

* kitty.say === doraemon.say:寫在constructor外的方法是類的原型的方法,是共有的

(

typeof

(new

(class})

));

* 結果:"object"

*typeof:用來判斷資料的型別

* 用new關鍵字宣告的資料都是object型別的

學習記錄 ES6(2020 12 05)

變數提公升 var宣告的變數存在變數提公升 let宣告的變數不存在變數提公升 作用域 var定義的變數沒有塊作用域,只有函式作用域,可以跨塊訪問,不能跨函式訪問。let定義的變數有塊作用域,在塊作用域裡定義的變數,只能在塊作用域裡訪問,不能跨塊訪問,也不能跨函式訪問。變數名 同一作用域下,let不能...

學習記錄 ES6 module

export 和 import 簡單的例子 a.js export const a i am a index.js import from a.js console.log a i am a export import 嚴格模式 export 的具體使用方式,以及 import 的具體使用方式 de...

ES5學習記錄 1

進入嚴格模式只需要使用 use strict 這條語句即可。對於支援嚴格模式的瀏覽器,會在宣告 use strict 語句之後的 都將會在嚴格模式的限制下執行。對於不支援嚴格模式的瀏覽器,這個宣告只是乙個簡單的字串,不會產生任何影響。使用 嚴格模式的宣告必須放在指令碼第一行,否則整個指令碼會以正常模...