<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Plunker</title>
</head>
<body>
	<script>
    // Allows Plunker to display logs in preview panel 
    // for better in-browser experience
    var originalConsoleLog = console.log
    console.log = function() {
      originalConsoleLog.apply(console, arguments)
      var args = Array.prototype.slice.call(arguments).map(JSON.stringify);
      document.body.innerText += args.join(' ') + '\n';
      document.body.style['fontFamily'] = 'monospace';
      document.body.style['fontSize'] = '1.5em';
    };
  </script>
  <script src="script.js"></script>
</body>
</html>
// Part 1
const outerThis = this;

const func = () => {
    console.log(this === outerThis);
};

func();
func.call(null);
func.apply(undefined);
func.bind({})();

// Part 2
const counter = {
  count: 0,
  incrementPeriodically() {
      setInterval(() => {
          console.log(++this.count);
      }, 1000);
  }
};

counter.incrementPeriodically();