<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="https://google.github.io/traceur-compiler/bin/traceur.js"></script> <script src="https://google.github.io/traceur-compiler/bin/BrowserSystem.js"></script> <script src="https://google.github.io/traceur-compiler/src/bootstrap.js"></script> </head> <script type="text/traceur"> window.onload=function(){ /*var d = {b:1}; d.a = function (){ (() => { console.log(this.b); //1 })(); } d.a(); alert(456); */ b = 2000; var d1 = {b:1}; var d2 = {b:11}; d1.aa = function (f){ f(); //2000 //f.call(d2); //箭头函数即使是call仍然是定义时的window,普通函数用call调用改变this,普通函数在调用处决定this,箭头函数在定义时决定this, (() => { //console.log(this); //d1 })(); } /*d1.aa(() => { console.log(this); //Window,调用相当于是在window中定义的函数,函数定义的时候参数是加入了局部函数作用域 }); */ d1.aa(function(){ console.log(this); //Window }); /*d1.aa((function(){ console.log(this); //Window })());*/ } </script> <body> <div id="app-3"> </div> </body> </html>