Why does my canvas don't draw my rect ? | Sololearn: Learn to code for FREE!
New course! Every coder should learn Generative AI!
Try a free lesson
+ 1

Why does my canvas don't draw my rect ?

Can't understand why it doesn't want to draw my snake... Thanks you <3 https://code.sololearn.com/W1KrHNDRYNA5/?ref=app

26th Aug 2018, 3:43 AM
Thomas Teixeira
Thomas Teixeira - avatar
5 Answers
+ 2
The reason is because in JavaScript the keyword ‘this’ referes to the current object it is referenced in. For instance var move = function() { this.x; //references the anonymous function declared here } but what you can do to avoid this is to declare a variable outside of the fucntion that is assigned the value of ‘this’ for instance: var self = this; move = function() { self.x; // is not refering to the object outside of the anonymous function; } Another way to avoid this would be to use the ES6 fat arrow function declaration, like: var self = this; move = () => { this.x === self.x; //true // the fat arrow declaration doesn’t overload the ‘this’ keyword // so is still a reference to the outmost object. } in your Snake class if you define a variable like such var self = this; then use that variable instead of the ‘this’ keyword inside of your functions it will work fine. Edit: correct my arrow function syntax
26th Aug 2018, 7:12 PM
Gabriel Jon Peery
Gabriel Jon Peery - avatar
+ 4
line 37 and 38 draw and move are methods of Class Snake so you need snake.draw() < parenthisis this will show rect
27th Aug 2018, 3:12 PM
D_Stark
D_Stark - avatar
0
Thank you so much <3 But if you don't mind to explain me, I don't really understand what does it changes to create a variable self...
26th Aug 2018, 11:45 PM
Thomas Teixeira
Thomas Teixeira - avatar
0
Here I wrote you a bit of example code using your Snake object and it’s draw methods as examples. https://code.sololearn.com/Wqy0DSM93x5E/?ref=app
27th Aug 2018, 2:08 AM
Gabriel Jon Peery
Gabriel Jon Peery - avatar
0
the setIntetval method takes a function references as the first argument. Adding the parentheses will give the return value of those functions (which in this cause would be null as nothing is returned from the function.)
27th Aug 2018, 5:14 PM
Gabriel Jon Peery
Gabriel Jon Peery - avatar