首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

new new Foo().getName()解析

/请写出下面方法的输出结果 Foo.getName(); getName(); Foo().getName(); new Foo.getName(); new Foo().getName();...new new Foo().getName(); var obj = new new Foo().getName(); 大家,可以先自己思考下答案,再看下面的答案与解析 02 结果解析 Foo.getName...(); //2 相当于调用名叫Foo.getName的一个函数,所以输出2 getName(); //4 就相当于调用getName函数,所以输出4 Foo().getName(); //1...Foo中的getName中,它把最外面的getName重写了.所以执行getName(); 输出结果1 new Foo.getName(); // 2 这里Foo后面没有括号,所以Foo.getName...会看成一个函数的名称 new Foo().getName(); //3 先执行new Foo() , 会产生一个实例化对象,然后在执行getName,即prototype添加的getName new

1.1K10
您找到你想要的搜索结果了吗?
是的
没有找到

这段代码很有意思!

(5); } //写出以下各式的输出结果 Foo.getName(); getName(); Foo().getName(); getName(); new Foo.getName(); new...()实际上是访问Foo对象下的getName输出2 第二个 getName()输出4 这个考察的是预编译的知识,直接执行了getName,这里就摘取4,5两块代码来讲 var getName =...:undefined } 第四步:找函数声明,值赋予函数体 Go { getName:getName(); } 当预编译执行完成后,才开始执行代码,也就是那条函数表达式,getName被赋予了新的函数体...,也就是输出4 第三个 Foo().getName()输出1 Foo()先执行,全局下的getName被重新赋值,返回了一个this,这里的this指向的是window,此时的getName实际上是...this } 第四个 getName()输出1 因为在执行上一个函数时,由于getName是定义在全局的,所以在执行时,实际上改变了全局作用域下的getName的值,所以再次执行getName(

46430
领券