# 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