Not language specific.
The good/common practices.
1) avoid putting anything into the global scope you don't have to. This is where objects often shine.
2) use verbose names that are less likely to create conflicts.
3) adhere to a naming convention such as, well, Ahmed Ghanem gave a good example of using underscores to delimit library_<function/property>
I often use camelCase in local scope and on methods/properties/library/module names and underscores between them.
templateForm_formFromArray for example, lets me know that the procedure is in /template/forms.template.php and formFromArray tells me what it does. The odds of some other function/method conflicting with that name is pretty low.
... and a lot of languages have language specific features to help reduce the odds, self instancing functions in JavaScript, namespaces in PHP, etc, etc...
If you break up your code into smaller pieces, then you should be mostly free of naming conflicts. This is under the assumption that your code is also scoped to their own blocks and files.
When it comes to sharing libraries or scoping your code, then prefix or affix everything with a namespace as Ahmed Ghanem pointed out.
Define a good convention naming with your team :) it's essential, to be sure to use a good naming for vars and object depending on scope, location of the code, project name, functionnalities... I guess in the end, it depends on preferences, team size, etc... But i'd say that defining conventions and rules to name things is a good strategy :)
Ahmed Ghanem
Prefixing (well, affixing) is really the only option. Some patterns you'll see are
<library>_<name> ,<module/class>_<name>,<library>_<module/class>_<name>. Your scheme is perfectly reasonable.