I write a function to add listener to all elements match a specific selector, as below:
        //  Add event handler to all elements match a specific selector
        function addEventListenerToAll(selector, type, listener)
        {
            [].forEach.call(document.querySelectorAll(selector), function(element) {
                if (element) {
                    element.addEventListener(type, listener);
                }
            });
        }
Then I invoke the function as below:
  addEventListenerToAll(".myclass", "click", function () {
      var url = this.getAttribute('myurl');  // What is 'this' refers to?
  });
Then what is 'this' in this.getAttribute refers to?
Based on my test, it refers to one of the elements in the foreach loop. However, I check this document https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this and it said in "Class context", 'this' in a non-static function refers to the current class object, otherwise, it defaults to the global object, in browser, it should be the window object.
So, as the listener function is not a class member function, it should refer to window instead?
 
    