javascript / expert
Snippet
Benutzerdefiniertes Reflect-Proxy-Trapping für reaktive Array-Mutations-Guards
Das Absichern von reaktiven Status-Arrays vor unbefugten direkten Methodenaufrufen erfordert das Abfangen von Eigenschaftszugriffen auf dem Array-Prototyp und das Auswerten von Zustandsprüfungen vor der Ausführung.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
const MUTATING_METHODS = new Set(['push', 'pop', 'shift', 'unshift', 'splice']);export function createGuardedReactiveArray(initialItems, isFrozenCondition) {return new Proxy(initialItems, {get(target, prop, receiver) {if (typeof prop === 'string' && MUTATING_METHODS.has(prop)) {return function (...args) {if (isFrozenCondition()) {throw new Error(`Array mutation '${prop}' blocked by state guard.`);}return Reflect.get(target, prop, receiver).apply(target, args);};}return Reflect.get(target, prop, receiver);}});}
vue
Erklärung
1
const MUTATING_METHODS = new Set(['push', 'pop', 'shift', 'unshift', 'splice']);
Definiert ein performantes Set mit Methoden, die Arrays direkt verändern.
2
return new Proxy(initialItems, {
Erstellt einen abfangenden Proxy-Wrapper um Array-Zugriffsoperationen.
3
if (isFrozenCondition()) {
Wertet eine Prädikatsbedingung aus, bevor Array-Modifikationsmethoden ausgeführt werden.
4
return Reflect.get(target, prop, receiver).apply(target, args);
Wendet die ursprüngliche Array-Methode über Reflect an, wenn der Guard erfolgreich ist.