这样写为什么就变成 2 4 4 4 2 3 3了,有点没转过来弯
来源:7-2 一道函数考察基本功

慕勒2048820
2019-03-24
function Foo() {
var getName = function () {console.log(1)}
return this
}
Foo.getName = function () {console.log(2)}
Foo.prototype.getName = function () {console.log(3)}
var getName = function () {console.log(4)}
function getName() {console.log(5)}
Foo.getName()
getName()
Foo().getName()
getName()
new Foo.getName()
new Foo().getName()
new new Foo().getName()
写回答
2回答
-
慕瓜2537602
2025-04-07
Foo() 这个函数里面的getName是有var的,所以这个是一个局部变量,函数return 返回的this,将Foo()指向了window, 实际执行是Foo().getName() -> window.getName();第二步把getName()的时候已经是打印4了。
00 -
快乐动起来呀
2019-03-25
其实这个题目不难,都是函数执行首先要弄懂函数是什么?Foo.getName这个简单Foo.getName = function () {console.log(2)},所有首先输入2;然后是执行getName()这个时候作用域是window,所以var getName = function () {console.log(4)}是这个代码,输出4,以此类推试试看,结合视频再看看
00