JavaScript笔试面试题收集(一)

本系列主要在于对自己的日常学习的内容做一个归纳整理,同时分享一些平时遇到的一些比较好的面试题.

通过对笔试面试题的学习,强化自己的所学知识面.

出题的大师兄,草粉吗?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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();

题目只答对一半的宝宝表示很想哭啊。
以下是解题思路:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Foo.getName();              // 2
getName(); // 4
Foo().getName(); // 1
getName(); // 1

new Foo.getName(); // 2
// var a = new Foo.getName();
// var a = {};
// a.__proto = Foo.getName.prototype;
// Foo.getName.call(a);

new Foo().getName(); // 3
// var b = new Foo().getName();
// var b = {};
// b.__proto__ = Foo.prototype;
// Foo.call(b);
// b.getName();

new new Foo().getName(); // 3
// var c = new Foo().getName();
// var c = {};
// c.__proto__ = Foo.prototype;
// Foo.call(c);
// var d = new c.getName();
// var d = {};
// d.__proto__ = c.getName.prototype;
// c.getName.call(d);

文章目录
|