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 語句之後的 都將會在嚴格模式的限制下執行。對於不支援嚴格模式的瀏覽器,這個宣告只是乙個簡單的字串,不會產生任何影響。使用 嚴格模式的宣告必須放在指令碼第一行,否則整個指令碼會以正常模...