<code> funktionen Do() körs inte i samma scope som value finns i. Generellt så skulle jag inte skriva egna javascript-object utan köra med något befintligt framework istället, t.ex. jQuery eller ExtCore. Men på http://www.javascriptkit.com/javatutors/object4.shtml så gör dom väl lika som jag har gjort? Eller är det exemplet också fel? Testa såhär: Nu när parenteserna blev rätt så fungerar det. Tack!Läsa Object.Property från Object.Method
function Do() {
alert(this.value);
}
function Obj() {
this.value = "hej";
this.do = Do();
}
var object = new Obj();
object.do;
</code>
Den här koden ger resultatet "undefined" istället för "hej". Varför?
ThomasSv: Läsa Object.Property från Object.Method
En lösning på ditt problem här är att helt enkelt se till att Do() körs i rätt scope.
<code>this.do: Do.call(this)</code>Sv:Läsa Object.Property från Object.Method
ThomasSv: Läsa Object.Property från Object.Method
function Do() {
alert(this.value);
}
function Obj() {
this.value = "hej";
this.do = Do; // <--- Utan paranteser.. annars körs funktionen direkt och värdet blir det som returneras från Do(), alltså undefined eller null.
}
var object = new Obj();
object.do(); // Med paranteser eftersom det är en funktion..
Evenuellt måste du ändra function Do() till
var do = function() {
// alert etc
}
Sv:Läsa Object.Property från Object.Method
Thomas