JavaScript原型(知识点总结)

206 阅读1分钟

文章的行文思路都是按照博主个人对相关知识的理解做编写,综合了权威书籍和诸多贴文的解释,最后编写为方便自己个人理解的版本。

同时附带校招过程中遇到的相关试题

原型

  • 原型链:由实例对象中的__proto__ "指针"(也可以说是属性)依次连接而成的一条长链。

  • Object.prototype是所有类型(包括Array.prototype等)的原型,是原型链的终点,得Object.prototype.prototype === null

  • 原型搜索存在动态性

    1. 创建实例后,对其原型做修改,实例在原型上的属性也会受影响
    2. 原型链的搜索过程,自底向上搜索,搜索到想要属性或变量时就会停下来,所以下层的会覆盖上层的。原型链中搜索不到则属性不存在。
  • 实例、构造函数、原型对象之间的关系(三者都是对象)

    • 构造函数存在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