请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

遇到不懂的题目


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 我就呆了

正在回答 回答被采纳积分+3

4回答

双越 2022-03-11 14:06:10

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

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

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

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

0 回复 有任何疑惑可以回复我~
双越 2022-03-11 08:30:44

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

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

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


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

0 回复 有任何疑惑可以回复我~
双越 2022-03-11 08:25:31

图片描述

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

干脆我把你照片贴过来吧

0 回复 有任何疑惑可以回复我~
  • 提问者 伊黛姆 #1
    老师,后面三个   new   的对比是什么情况呢,三个我都想看看
    回复 有任何疑惑可以回复我~ 2022-03-11 10:33:58
双越 2022-03-10 18:35:12

把代码格式化高亮一下吧

0 回复 有任何疑惑可以回复我~
  • 提问者 伊黛姆 #1
    我拍个照片
    回复 有任何疑惑可以回复我~ 2022-03-10 18:37:29
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信