# 0318複習用 ## 抓取網路資料 如遇到屬性內有設定特殊字元屬性時, 如:- 時, 可以改用何種方式選取該屬性? ### dataset 可藉由 dataset 來管理屬性 ```html <div id='xyz' data-aa='123' data-b='456' data-ccc='890'></div> ``` ```jsx //用 querySelector 抓出該元素 const whatAtt = document.querySelector("#xyz"); console.log(whatAtt.dataset); //此時會印出?? ``` ## RESTful ### HTML form 標籤有重要的兩個屬性, method 與 action - action - 用途為? 若沒寫會發生?? - method - 用途為? HTML 表單只有支援哪兩個動作? 需透過 JS 就可以使用其他的方式送出資料 ### 他種類補充 patch 與 put 在實作上沒有太大區別,其作用為? 但在原始定義中區別為? ## setTimeout & setInterval setTimeout, setInterval 參數如何設置?設置時間的單位為?三秒如何設置? setTimeout, setInterval 時間到後各自會發生? setTimeout, setInterval 如何停止? ```jsx setTimeout((x) => { console.log(x) }, 3000) // 會發生? ``` ```jsx setInterval((x) => { console.log(x) }, 3000) // 會發生? ``` ## Event loop ### 導言 ```jsx console.log(1) setTimeout((x) => {console.log(2)}, 3000) console.log(3) // 印出? console.log(1) setTimeout((x) => {console.log(2)}, 0) // 與上方的差異為? console.log(3) // 印出? ``` ### 資料結構 - stack 堆疊, 依什麼原則運作? - queue 佇列, 依什麼原則運作? ### 網頁運行 網頁在進行事件時, stack, WebAPIs, queue 三者間會如何運作? 事件會在哪邊運作?多事件時會產生什麼狀況?若有監聽或計時, 三者如何運作? ### stack overflow stack 溢流 (overflow) 是什麼?怎麼產生的? ### Event loop Event loop 是指什麼的 Loop ? ## 物件導向 OOP 物件導向的本質為?共同行為在親層與子層間的關係是? 物件 = 屬性 + 行為 ### 物件相關 物件的方法 (methor, 或稱動作), 實際上是函數, 如何在物件上添加方法? ### 繼承物件 (相關原理, 實例等 創立新物件會有繼承 方法 的狀況, 有好幾種可以創立物件的方式, 繼承的模式也會不一樣, 有的涉及到原型練 1. 用 Literal (字面值) 賦值, 此時 h1 會帶有 hero 該物件內的所有屬性與方法 (methor) ```jsx function heroCreator(name, power){ const hero = { name : name power : power attack : function(){ console.log(‘attack!!’) } return hero } const h1 = heroCreator(‘123’, 3000) ``` 字面值的方式建立 object, 其 .__ proto __ 會指向? 2. 原型打造 ```jsx function heroCreator(name, power){ const h = Object.create(action) // 此處(action)放入原型(此例為action), 沒有要打 null 給空值 /* 此時會發生 1. 會先? 2. .__ proto__ 會? */ h.name = name h.power = power return h } ``` 上面是模版, 另外要帶入原型, 若新創的物件要執行沒有定義方法會發生? ```jsx //原型, 放入上方模板, 即可使模板所造的新物件產生什麼效果? const action = function (){ eat : function() { console.log(‘yummy’) } attack: function(){ console.log(‘attack!!’) } } ``` ```jsx const h2 = heroCreator(‘abc’, 2000) console.log(h2.eat) // 若依照上方原型打造, 此時會印出? ``` 故如果使用該物件的方式, 若該物件沒有該功能會?? 3. 第二點用 NEW 改寫 ```jsx function heroCreator(name, power){ this.name = name this.power = power } const h3 = new heroCreator(‘cc’, 100) // 若沒有加 new 會發生? ``` 在宣告後的生成函數加了 new 會依序發生以下事件: 1. 先? 2. 會先將第一步的 (什麼東西) 指向此例的 heroCreator 的 (什麼東西), 預設值為空物件 3. 將 name 帶入??(這個物件的屬性名字請以這個引數賦予名字) 4. return 5. 最後將 h3 = 該物件 ### 原型鏈 ( .**proto** 與 prototype ) ```jsx ''.__proto__ -> string.prototype //此為原型練 ``` JS 物件的基礎: 1. 所有的物件都有?? 2. 所有的 function 都有 ?? ( function也是物件也有上面的?? ), 預設為空物件 注意:JS 沒有上下層所以 proto 不算上層 如果讓該物件使用方法, 而沒有該方法時, 會看該物件的?? 有無該方法 若沒找著會在生成此物件的函式的??尋找, 依此類推至最上層 流程:應為? ### 語法糖衣 JS 沒有 class 用 class 函數 { } 底層運作就是 prototype