In Javascript, kann ich erkennen, wenn eine globale Variable foo
gesetzt ist (unter der Annahme, dass es zunächst nicht definiert ist) unter Verwendung von Object.defineProperty
:Wie kann ich feststellen, wenn eine globale Variable in Javascript gesetzt ist?
var foo_;
Object.defineProperty(window, 'foo', {
get: function() {
return foo_;
},
set: function(newFoo) {
console.log('foo set to ' + newFoo);
foo_ = newFoo;
}
});
Gibt es eine elegantere Möglichkeit, dies zu tun? Ein Nachteil ist, dass ich Object.defineProperty
nicht zweimal auf der gleichen Eigenschaft aufrufen kann. Das Überschreiben der gesamten Eigenschaft, nur um zu erkennen, wann sie definiert ist, erscheint etwas übertrieben.
Könnte ich irgendwie proxies verwenden? Ich habe das Gefühl, dass ich einen Proxy machen müsste, der auf das Fensterobjekt zielt, aber ... ist das effizient?
Ich denke, wir können prüfen, ob es in Fensterobjekt wie 'Fenster [foo]' –
Ich möchte den Moment erkennen, wenn die globale Variable gesetzt ist und sagen, etwas zu dieser Zeit protokollieren. –
Das fühlt sich an wie ein asynchroner Hack. Wenn es ist, tu es nicht. Verwenden Sie ein "Versprechen" – 4castle