44.经典题目

在学习JavaScript的一些总结和经验,供大家参考和学习,同时也欢迎大家参与讨论。

MDN上查看JavaScript运算符的优先级

括号>成员访问(. [])>函数调用>后置递增减>逻辑运算

new Foo() (带参数列表)

new Foo (无参数列表)

new (带参数列表)比new (无参数列表)高比函数调用高,跟成员访问同级

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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操作,所以为 new (Foo.getName)();
new Foo().getName(); // 相当于( new Foo() ).getName(); 调用了Foo.prototype上的getName
new new Foo().getName(); // new ( ( new Foo() ) . getName ) ();
// 涉及知识点
/*
变量提升、函数提升
this指向
运算符优先级
对象属性等
*/

参考:

https://www.cnblogs.com/xxcanghai/p/5189353.html

https://github.com/Wscats/articles/issues/85



文章标题: 44.经典题目
文章作者: 王奕聪,QQ:1301842163
许可协议: 知识共享许可协议
©署名-非商用-相同方式共享 4.0