一个关于构造函数的题(涉及到new F F())

131 阅读1分钟

先是题

附带了点解释。

解释:

先明白new操作符做了什么。 看专栏new的笔记。

第一个

Foo对象上的getName 所以是2

第二个

执行getName定义时的表达式。因为变量大于函数。

所以是4

第三个

Foo函数执行,所以全局变量getname指针改变,所以是1

第四个

由于定义getName函数的表达式只执行一次,所以 不会是4 然后由于getName方法是全局标量,是Foo()执行后的1。

第五个和第六个

new操作符的做得是更改this的指向, 因为构造函数Foo没有this.getName,所以实例也就没有私有属性getName,只能通过原型链去获取。