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
28
29
30
function Parent() {
this.a = 1;
this.b = [1,2,this.a];
this.c = {demo: 5};
this.show = function() {
console.log(this.a, this.b, this.c.demo)
}
}
function Child() {
this.a = 2;
this.change = function() {
this.b.push(this.a);
this.a = this.b.length;
this.c.demo = this.a++;
}
}
Child.prototype = new Parent();
var parent = new Parent();
var child1 = new Child();
var child2 = new Child();
child1.a = 11;
child2.a = 12;
parent.show(); //1,[1,2,1],5
child1.show(); //11,[1,2,11],5
child2.show(); //12,[1,2,11],5
child1.change();
child2.change();
parent.show(); // 1,[1,2,1],5
child1.show(); //5,[1,2,1,11,12],5
child2.show(); //6,[1,2,1,11,12],5

其实要解出上面的问题,了解以下几句话就好了:

1.每个构造函数,都有一个原型,指向构造函数的原型对象。
2.每一个实例生成的时候,都会在内存中产生一块新的堆内存。
3.每一个实例都有一个隐式原型指向构造函数的原型对象。
4.this的指向,取决于this调用的位置,在这道题中,也可以理解为,谁调用这个方法,this就指向哪个对象。
5.数组和字面量对象都是引用。
6.原型链的查找原则: 就近原则。也就是说:当实例上存在属性时,用实例上的,如果实例不存在,则顺着原型链往上查找,如果存在,则使用原型链上的对象,如果不存在,则查找Object原型对象上的,如果都不存在,则为undefined。

文章目录
|