遇到不懂的题目

来源:2-8 用两个栈实现一个队列

伊黛姆

2022-03-10


function Foo() {
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()


双越老师 , Foo().getName() 这里的输出以及后面用 new 创建实例的输出我不怎么懂,希望老师可以说详细点 Foo() 的this是 window , 但是里面的 getName 我就呆了

写回答

4回答

双越

2022-03-11

new 的三种情况,你稍微动手一分析就明白了,光用眼睛是不行。

例如第一个,你把代码改一下

const a = new Foo.getName()
console.log(a)

打印 a 一看,就知道什么意思了。

0
1

双越

2022-03-11

第一,Foo().getName 其实就相当于 (new Foo()).getName 。因为 Foo 函数里有一个 return this

第二,下面有三个 new ,你是哪一个不懂?

另外,this 的值,不同的执行情况,值不一样。


如果再有问题,可以把无关代码全部删掉,只贴问题相关代码。这样好解答。

0
0

双越

2022-03-11

图片描述

你新提的题目,倒是有照片,但是没描述。导致我俩题目对比这看。

干脆我把你照片贴过来吧

0
1
伊黛姆
老师,后面三个 new 的对比是什么情况呢,三个我都想看看
2022-03-11
共1条回复

双越

2022-03-10

把代码格式化高亮一下吧

0
1
伊黛姆
我拍个照片
2022-03-10
共1条回复

2周刷完100道前端优质面试真题 双越最新力作

『前端面试真题100道』视频详解

1509 学习 · 642 问题

查看课程