JavaScript中的每一第一类都有两个对准其蓝本(prototype)的外部镜像,那个蓝本也是两个第一类,所以它也有他们的蓝本,一层层向下直至最终两个蓝本的蓝本为空。此种亲密关系被称作蓝本链(prototype chain)。
当他们出访第一类的特性或形式时,JavaScript会具体来说检查和该第一类这类与否具备该特性或形式,假如没,则会沿著蓝本链竭尽全力搜寻,直至找出该特性或形式或是蓝本链的尾端为空。此种形式使第一类间能共享资源特性和形式,在很大某种程度上同时实现了标识符的F83E43Se。
上面是两个实例:
// 表述两个缺省 function Person(name, age) { this.name = name; this.age = age; }// 给Person的蓝本第一类加进两个形式 Person.prototype.sayHello = function() { console.log(`Hello, my name is${this.name}, Im ${this.age} years old.`); }; // 建立两个Person第一类 const person = new Person(Tom, 18); // 初始化sayHello形式 person.sayHello(); // Hello, my name is Tom, Im 18 years old. // 输入person的蓝本第一类 console.log(Object.getPrototypeOf(person)); // Person { sayHello: [Function] }在那个范例中,他们表述了两个缺省Person,并且给它的蓝本第一类加进了一个形式sayHello。然后他们建立了两个person第一类,并初始化了sayHello形式。由于person第一类这类没该形式,JavaScript沿著蓝本链搜寻,在Person的蓝本第一类上找出了该形式并执行。
注意,在ES6之后,他们能使用class关键字来表述类和继承亲密关系,但实际上它只是一种语法糖,底层还是通过蓝本链同时实现的。