iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 22
0
自我挑戰組

前端我來了 - 30天 JavaScript 從無到有 系列 第 22

[30天 JavaScript 從無到有 Day 22] Everything is an object

  • 分享至 

  • xImage
  •  

Everything is an object (well, almost everything)
除了一開始提的 Primitive value, 其餘皆為 object

  • Arrays
  • Functions
  • Objects
  • Dates
  • Wrappers for Numbers, Strings, Booleans
  • Primitive value else...

Constructor : Person

  • name
  • birth
  • job

Instances

{
  "name": "sui",
  "job": "student",
  "birth": 1998
}

{
  "name": "len",
  "job": "programmer"
}

Inheritance 繼承
Constructor : Teacher

  • qualifications
  • license

如果 Person -> Teacher (Teacher 繼承 Person)
Constructor : Teacher

  • name (Protptype)
  • birth (Protptype)
  • job (Protptype)
  • qualifications
  • license

Protptype
JavaScript 並不像 Java ...等物件導向語言有明確的 class 來區分概念與實體(Instance),在創建物件中,

  1. 定義類別模板
  2. 初始化 : new 類別(constructor)
  3. -> instance

Protptype Chain : 依據繼承向上查找
Instance(Protptype) -> Constructor(Protptype) -> Object(Protptype) -> null

小結:
所有JavaScript 物件都有 Protptype property -> 得以繼承
將欲被其他物件繼承的method & property 放入 Protptype property -> 得以繼承
建構子的 Protptype property 不屬於其本身,而是所有透過他產生的實例(instance)
當method 或 property被呼叫,先查找物件本身,若無,則往其Protptype 查找 -> Protptype Chain


今天的內容相對較少~因為一半時間花在完成小遊戲 pig game,但因為內容幾乎都是已經寫過的基礎再延伸或是小小變化,就沒放上來了/images/emoticon/emoticon01.gif/images/emoticon/emoticon01.gif

明天實作今天的概念~繼續努力!

新手練功中,如有錯誤觀念,歡迎指正! 明天進入實作~不知道會不會有趣點
課程 : https://www.udemy.com/course/the-complete-javascript-course/
來源 : https://developer.mozilla.org/zh-TW/docs/Learn/JavaScript/Objects/Inheritance
https://cythilya.github.io/2018/10/26/prototype/


上一篇
[30天 JavaScript 從無到有 Day 21] JavaScript DOM Event & toggle
下一篇
[30天 JavaScript 從無到有 Day 23] Prototype
系列文
前端我來了 - 30天 JavaScript 從無到有 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言