2017-01-10 14 views
0

Ich habe folgendes Objekt lesen:Kann nicht Eigentum ‚decomposeTextShadow‘ undefinierter

var decomposer = { 
     decomposeColor: function(color) { 

     }, 
     removeColor: function(code) { 
     }, 
     decomposeTextShadow: function(code) { 

     }, 

     //This line causes an error 
     decomposeBoxShadow:this.decomposeTextShadow, 
     decomposeRadius: function(code) { 
     } 
    }; 

Allerdings, wenn ich meine Seite Chrom dev Tools mich Cannot read property 'decomposeTextShadow' of undefined an der Linie sagen einen Fehler geben laden, die ich einen Kommentar hinzugefügt haben vorher in meinem Code. Irgendwelche Ideen? Auch wenn ich versuche decomposeBoxShadow:decomposer.decomposeTextShadow,

Antwort

1

Es scheint, wie der Code in einer strikten Modus-Funktion enthalten ist. In einer strikten Funktion ist thisundefined wenn "normal" genannt.

Siehe Self-references in object literal declarations für eine Lösung zu dem, was ich glaube, Sie zu tun versuchen.

Auch wenn ich versuche, decomposeBoxShadow:decomposer.decomposeTextShadow

Sie versuchen, sich decomposer.decomposeTextShadow während der Initialisierung des Objekts zuzugreifen. Das Objekt wird nur decomposerzugewiesen, nachdem es erstellt wurde. Daher hat während die Erstellung des Objekts decomposer immer noch den Wert undefined.

2

In Ihrem Fall this nicht auf das Objekt decomposer beziehen. Es ist undefined.

Verwandte Themen