JavaScript原型链是一种用于面向对象编程的一种技术,此技术允许一个对象从另一个对象继承属性。它有助于简化编程,并使代码更优雅。
JavaScript 原型链的实现原理是:一个对象比如Person,他的实例可以访问Person的prototype属性,prototype属性又有自己的prototype,以此类推。当一个对象实例请求一个不存在于自身实例中的属性时,JavaScript引擎会沿着原型链一层一层往上寻找,直到找到为止。
在JavaScript中,只有函数对象及Object对象具有prototype,因此可以通过函数对象创建一个类,这些类的实例及其原型的关系即称为原型链。
原型链在JavaScript中具有很多优点:首先,它很容易将函数和对象整合到一起;其次,JavaScript中没有继承机制,但原型链很好地弥补了这一点;此外,原型链可以利用多层次继承增强代码的复用性。
此外,原型链甚至还可以被用作一个幽默的解释方式,比如当你想要询问小明:喏,你知道什么是橘子吗?你可以这么说:小明,你的母亲知道什么是橘子吗?如果小明的母亲也不知道,那么小明的祖母是否知道?你可以朝着对象的原型链施压,最终找到可以回答这个问题的东西。
代码示例:
function A(){
}
A.prototype.sayHi = function(){ console.log("hello from A"); }
function B(){
}
//将A的原型链连接到B的原型链 B.prototype = Object.create(A.prototype);
B.prototype.sayHello = function(){ console.log("hello from B"); }
let b = new B(); b.sayHi(); // hello from A b.sayHello(); // hello from B