# String 擴充

RenderJS 為 `String.prototype` 加入的方法與 getter：以標籤選擇器字串建構 DOM、元素查詢、JSON／HTML 工具與 URL 捷徑。

## String

原始碼：`src/prototype/String.ts`

| 方法／屬性 | 說明 |
| --- | --- |
| `"selector".RJS(body)` | 於符合選擇器的元素上啟動 `RJS` 實例；見 [核心概念](/zh/core-concepts) |
| `"tag.class#id"._(attrs, children)` | 依標籤選擇器字串建立真實 DOM 元素（含 SVG 命名空間偵測、`input`/`textarea` type/placeholder 解析、`lazyload` 屬性接線）|
| `"selector".$` | 取得符合的單一元素（`#id` 走 `getElementById`，其餘走 `querySelector`）|
| `"selector".$all` | 取得所有符合元素的陣列（`[...querySelectorAll(...)]`）|
| `"icon-a icon-b"._fa` | Getter，建構 `"i.icon-a.icon-b"._()` —— 依空格分隔的 class 名稱產生 Font Awesome `<i>` 元素 |
| `"str".$json` | 安全的 `JSON.parse(this)`；解析失敗時回傳 `undefined`（並記錄 log）|
| `"str".$$json` | `$json` 未失敗時為 `true` |
| `"str".$html` | HTML 逸出 ` `、`<`、`>`、`"`、`'` |
| `"str".copy()` | 非同步；透過 `navigator.clipboard.writeText` 寫入剪貼簿 |
| `"str".$regexp(flags?, force?)` | 依字串建構 `RegExp`；`force: true` 會先逸出正則特殊字元 |
| `"str".$base64(mimeType)` | 將 base64 字串解碼為 `Blob` |
| `"str".$$(filter?)` | 正則測試、字串完全相等，或（無參數時）去除空白後非空的判斷 |
| `"url".$url` | `new URL(this)`，相對路徑時 fallback 為 `new URL(location.origin + this)` |
| `"url".$queryAll` | 解析後的 query string 物件（透過 `$url.$queryAll`）|
| `"url".$img` / `$$200(isImg)` / `$req(body, once)` / `$query` / `_history(title)` / `_query(obj)` / `__history(title)` / `__query(obj)` / `query_(keys)` / `query__()` | 轉發至下方 `URL` 對應的方法／getter，套用於 `this.$url` |
