mqyqingfeng / Blog

冴羽写博客的地方,预计写四个系列:JavaScript深入系列、JavaScript专题系列、ES6系列、React系列。
30.69k stars 4.71k forks source link

《JavaScript深入之从ECMAScript规范解读this》讨论 #215

Open cheerfulHuhan opened 2 years ago

cheerfulHuhan commented 2 years ago

@littleluckly 刚才去吃饭了,这道题考察的是运算符优先级问题,各运算符优先级可以查看这里

你会发现 成员访问 和 new (带参数列表)的优先级都为 19,相同等级下,遇到谁先执行谁,所以 new Foo().getName()相当于 (new Foo()).getName()

接下来的就比较简单了, new 返回一个对象,这个对象的原型指向 Foo.prototype,然后访问这个对象上的getName方法,自然是调用写在原型上的这个方法啦,结果也就是 3。

Originally posted by @mqyqingfeng in https://github.com/mqyqingfeng/Blog/issues/7#issuecomment-302299071

cheerfulHuhan commented 2 years ago

我刚刚学不是很会,我觉得因为只Foo对象中getName没有使用var会成为一个全局变量吗,然后new返回一个对象,找不到在Foo中没有找到getName,所以才在原型中查找是否有getName,所以才为3

mqyqingfeng commented 2 years ago

@cheerfulHuhan 你说的是对的,跟我回答的好像也不冲突