Is calling a property's method from another method of the same object in this manner ok?

Viewed 18

Can someone help me understand why the code below works and if this is an acceptable pattern to use?

Without getting into it too much I have a basic state machine functionality inside an object called states in a simple browser game I am making and I able to trigger event transitions by calling states.event('someEvent') from within the states object itself. For instance if the update method of a given state, say states.someState.actions.onUpdate() is running it can call states.event('someNewEvent'). Doing it this way is not something I need to do, I did it accidentally but I was very confused by the fact that it worked. So the code below is that logic/functionality which I don't understand reduced down to a simple example.

I can't seen to find any information that would explain this type of pattern. Everywhere online would seem to suggest that I write "this.printText()" instead of "myObj.printText()" but it only prints when I do it the way I have below.

This seems like it might be bad practice, at the very least it would be because I don't understand quite why it works... Any help would be appreciated. I struggle a lot with javascript coming from C# in unity game engine.

let myObj = {
  printText: function() {
    console.log('I thought this would not print');
  },
  myProperty: {
    toPrint: function () {
      myObj.printText();
    }
  }
  
}
myObj.myProperty.toPrint();
0 Answers
Related