Structuring a HTML5 game without a framework
In order to prevent objects from depending on global variables (and in JavaScript almost every identifier is actually a variable), you can use the principle of dependency injection.

When an object needs to interact with another object, it should receive that object, either when it is initialized, through a setter or as a method parameter.

When your player requires the world, you could pass it when you create it and store it in a variable in local scope:

var player = new Player(world);


However, when your game has multiple worlds and the player moves from one to the other, it would be good to be able to change the world. In that case you could have a setter:

var player = new Player();
player.setWorld(world);


When the world is only required for a single method, you can also decide to pass the object to that method as a parameter:

player.checkCollisions(world);