Code Monkey home page Code Monkey logo

vanilla's People

Contributors

imtumbleweed avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

vanilla's Issues

Named Access on Window Object is bad practice?

I was reviewing your article on building a vanilla JS router on Free Code Camp's news, when I ran across this code:

      window.onload = event => {
            // Add history push() event when boxes are clicked
            window["home"].addEventListener("click", event => push(event))
            window["about"].addEventListener("click", event => push(event))
            window["gallery"].addEventListener("click", event => push(event))
            window["contact"].addEventListener("click", event => push(event))
            window["help"].addEventListener("click", event => push(event))
        }

I was confused, since I'd never seen this access of the window object. About 20 minutes of googling later led me to these two Stack Overflow responses:
https://stackoverflow.com/a/3434388/1420506
https://stackoverflow.com/a/11691401/1420506

Both conclude that using named access on the Window object should probably be avoided in preference to document.getElementById(). As I understand the reasoning, it is possible or even likely to get name collisions in the global window namespace which will result in unexpected behavior. For example, if you chose an element id which overlapped with an existing/reserved global/window property (IE: windows.closed or window.event), your router event would not be attached and would not fire.

I believe this is a bad practice, used without proper explanation in your code, and should not be included in a Free Code Camp article named at coding novices.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.