文章的行文思路都是按照博主个人对相关知识的理解做编写,综合了权威书籍和诸多贴文的解释,最后编写为方便自己个人理解的版本。
同时附带校招过程中遇到的相关试题
原型
-
原型链:由实例对象中的
__proto__"指针"(也可以说是属性)依次连接而成的一条长链。 -
Object.prototype是所有类型(包括Array.prototype等)的原型,是原型链的终点,得
Object.prototype.prototype === null -
原型搜索存在动态性
- 创建实例后,对其原型做修改,实例在原型上的属性也会受影响
- 原型链的搜索过程,自底向上搜索,搜索到想要属性或变量时就会停下来,所以下层的会覆盖上层的。原型链中搜索不到则属性不存在。
-
实例、构造函数、原型对象之间的关系(三者都是对象)
-
构造函数存在
prototype属性指向原型对象 -
原型对象存在
constructor属性指向构造函数 -
实例对象存在
__proto__指针指向创造其的构造函数的原型对象(prototype)。
-
-
笔试题
let Base = {
name: 'base'
};
let A = function (){
this.name ='a';
}
A.prototype = Object.create(Base);//创建一个以Base为原型的对象 {__proto__:Base}
let a =new A();
Base.name = 'new_name';
console.log(a.name);//a
delete a.name;
console.log(a.name);//new_name