+ 6

Need help with JS and setInterval...

Hello, I need help with a simple problem I presume... I want to create an rectangle, and move him from right to left with setInterval(). With my "move" function, it work, but when I want do this with my method update, the rectangle can't move, only drawing. Thanks. https://code.sololearn.com/W7k44CsWYDM7/?ref=app

3rd Oct 2018, 10:52 PM
IdkWhoIAm AI
4 Answers
+ 4
IdkWhoIAm AI *this in JS points to different objects based on it's execution context and whether you're in strict mode or not. setInterval is a method of a Window object. You passed update to setInterval, then after some internal processing, Window will call the update method. In this case, *this points to Window not obstacles[0]. For the latter to happen, bind the update method when you pass it so *this always point to an obstacle. obstacles[0].update.bind(obstacles[0]) Your English is fine. Glad to help.
4th Oct 2018, 2:37 AM
HoĂ ng Nguyễn Văn
HoĂ ng Nguyễn Văn - avatar
+ 5
Remove the parentheses after update. You were invoking the function, not passing it to setInterval. You might also need to bind update to obstacles[0] since the context has changed and this might not point to the expected object.
4th Oct 2018, 12:02 AM
HoĂ ng Nguyễn Văn
HoĂ ng Nguyễn Văn - avatar
+ 5
Thank for your help. I removed parenthesis after update, it's like the call to my function move : setInterval(move, 100); I think than I understood this. But I dont understand "bind update to obstacles[0]", I need to add a line before setInterval ? Sorry for my bad english...
4th Oct 2018, 12:29 AM
IdkWhoIAm AI
+ 4
Ill read your explanation many times to understand a maximum. I understand better now about error of my code, Ill search informations about "strict mode" too. Thanks again for this fast and very good explanation.
4th Oct 2018, 9:17 AM
IdkWhoIAm AI