var obj={     foo: function () {         console.log(this);     } }; obj.foo();//this指向obj-- 对象属性调用模式 (obj.foo=obj.foo)();//this指向window-- 函数调用模式 (obj.foo=obj.foo)返回的是函数体: function () {     console.log(this); } (false||obj.foo)();//this指向window-- 同上 (function () {     var a= function () {         return 10;     };     window.a= function () {         return new a();     };     console.log(a());//输出10 })(); 以上代码等价于 window.a= function () {     return new a(); }; (function () {     var a= function () {         return 10;     };     console.log(a());//输出10 })(); 立即执行函数是一个作用域,window对象的a不影响立即执行内的函数调用 var a= function () {     return 10; }; window.a= function () {     return new a(); }; console.log(a()); 首先,第一个匿名函数表达式指定给变量a,然后又用window.a定义,那么前面的a就被覆盖了。所以此时上面一大串就是 window.a= function () {     return new a(); }; console.log(a()); 当调用a时a(),a对象的实例化引起递归(这个不确定。。。。)
点赞 1

相关推荐

Z_eus:别打招呼直接发你的优势
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务