2016-05-18 4 views
2

Ich habe ein Array mit Objekten gefülltJavaScript Proxies: Stecher nicht, wenn Objekte in einem Array modifiziert

let array_of_objects = [{ 
    id: 1, 
    name: "John" 
}, { 
    id: 2, 
    name: "Bill" 
}, { 
    id: 3, 
    name: "Mike" 
}]; 

ich dann einen Proxy mit einem Set-Handler und meine Array als Ziel erstellen

let p = new Proxy(array_of_objects, { 
    set: function(target, property, value) { 
    //Do something 
    }) 
}) 

Wenn ich forEach auf dem Proxy-Aufruf:

p.forEach((e) => { 
    e.name = "some new value"; 
}); 

Das Set Falle meines Proxy löst nicht. Während das Array manipuliert wird (p.push() usw.). Tut.

Welche Falle sollte in meinem Fall verwendet werden?

Antwort

2

Sie müssen für jedes Objekt, das Sie ändern möchten, einen Proxy erstellen. Zum Beispiel können Sie Ihr Array zuordnen, um jedes Objekt mit einem Proxy zu verbinden:

const p = array_of_objects.map(e => new Proxy(e, { 
    set: function(target, property, value, receiver) { 
    console.log(target, property, value, receiver) 
    // Do something 
    } 
})); 

p.forEach(e => { 
    e.name = "some new value"; 
}); 
+0

Es funktioniert! Prost! – magom001

Verwandte Themen