面向对象编程(OOP)的核心概念包括:
- 封装(Encapsulation):将数据和方法封装在对象内部,并通过方法与外部交互。
- 继承(Inheritance):通过子类继承父类的属性和方法,简化代码重用。
- 多态(Polymorphism):同一个方法在不同对象中表现出不同的行为。
- 抽象(Abstraction):隐藏实现细节,提供简单的接口。
類型 | 定義 | 常見用途 | 常用屬性 | 使用限制 / 注意事項 | 範例語法 |
---|---|---|---|---|---|
Normal Flow(正常流) | 預設排列,元素依序從上到下、左到右排列(block 換行、inline 不換行) | 段落、文章、基本排版 | display: block / inline / inline-block margin , padding |
預設排列方式,較難做左右並排 | <p>Hello</p><span>World</span> |
Float Flow(浮動流) | 使元素脫離正常流,漂浮到左/右邊,其它元素繞過它 | 圖文混排、舊式左右欄佈局 | float: left / right clear , overflow (解浮動) |
脫離文流,容易影響其他元素排版,需要清除浮動 | img { float: left; } div::after { clear: both; } |
Positioned Flow(定位流) | 脫離文流,根據指定位置(top/right/bottom/left)擺放 | 彈出視窗、對話框、貼齊右上角元素、懸浮按鈕 | position: absolute / relative / fixed / sticky top , left , z-index |
absolute 依賴最近 relative 父元素定位;fixed 固定在螢幕 |
.box { position: absolute; top: 10px; left: 20px; } |
Flex Flow(彈性流) | 改變排列邏輯,讓子元素彈性排列於一維方向 | 水平導覽列、按鈕列、居中排版 | display: flex flex-direction , justify-content , align-items , gap |
排列為一維(單行或單列),不適合複雜網格 | `.container { display: flex; justify-c |
流程步驟 | 所屬 Process | 所屬 Thread |
---|---|---|
使用者啟動瀏覽器 | Browser Process | Main Thread |
使用者輸入網址、按下 Enter | Browser Process | UI Thread、IO Thread |
查詢 DNS、建立連線 | Network Process | Network Thread |
傳送 HTTP 請求 | Network Process | Network Thread |
收到回應(HTML 等) | Network Process | Network Thread |
將資料傳給 Render Process | Render Process | Main Thread(負責 HTML/CSS/JS 解析) |
項目 | Event Loop Queue(Macro Task Queue) | Job Queue(Micro Task Queue) |
---|---|---|
📌 又稱 | Task Queue / Callback Queue | Microtask Queue / Job Queue |
🎯 負責處理 | setTimeout、setInterval、I/O callbacks、DOM Events 等 | Promise.then()、queueMicrotask()、MutationObserver |
⏳ 執行時機 | 每輪事件循環的最後階段才會執行 | 每個 task 執行結束後立即清空 microtasks |
🥇 優先順序 | 較低,等微任務執行完才會輪到它 | 較高,會優先執行完所有 microtasks 才會進入下一個 macro task |
✅ 用途 | 處理整體非同步任務 | 處理細粒度更新、異步邏輯鏈接 |
del_all_branch () { | |
current_branch=$(git branch --show-current) | |
git branch | grep -Ev "^\s*(master|main|develop|dev|${current_branch})$" | xargs git branch -D | |
} | |
kill_port() { | |
if [ -z "$1" ]; then | |
echo "Usage: kill_port <port>" | |
return 1 | |
fi |
import { useState, useMemo } from 'react' | |
class ArrayUtil { | |
static range(...T) { | |
let start, end; | |
if (T.length === 1) { | |
start = 0; | |
end = T[0]; | |
} else { |