在基础面前,一切技巧都是浮云。
我的github主页:https://github.com/dashnowords
我的新书上架啦,3天即登京东计算机编程语言类排行榜Top1!!!精选30+JavaScript库,从使用方式,设计原则,原理源码,周边知识等等多维度详细讲解,带你玩转前端花花世界,欢迎选购~
题目是这样的
要求写出控制台的输出.
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();
child1.show();
child2.show();
child1.change();
child2.change();
parent.show();
child1.show();
child2.show();
题目涉及的知识点
- this的指向
- 原型机原型链
- 类的继承
- 原始类型和引用类型的区别
每一个知识点都可以拿出来做单独的专题研究。
解题需要的知识点细节
- 1.构造函数,都有一个
prototype
属性,指向构造函数的原型对象,实例会共享同一个原型对象; - 2.实例生成时,会在内存中产生一块新的堆内存,对实例的一般操作将不影响其他实例,因为在堆内存里占据不同空间,互不影响;
- 3.每一个实例都有一个隐式原型
__proto__
指向构造函数的原型对象; - 4.
this
的指向问题,常见的情况包含如下几种:- 4.1 作为对象方法时,谁调用就指向谁(本题中主要涉及这一条)
- 4.2 作为函数调用时,指向全局顶层变量
window
- 4.3 作为