什么是 JavaScript 原型链?

什么是 JavaScript 原型链?

JavaScript 中,每一个对象都有一个指向另一个对象的引用(__proto__),这个被引用的对象就是原型。当我们访问一个对象的属性或方法时,如果这个对象本身没有这个属性或方法,那么就会顺着原型链向上查找,直到找到对应的属性或方法,如果找不到就为 Null 也就意味着到达了原型链的顶端(Object.prototype)。

代码验证:查找原型的属性或方法

默认情况下字符串对象中没有 fn 这个方法,他就会一层一层的往原型上找,而原型上也没有这个方法,那么调用时候肯定会出错。

但如果我们可以给他原型上定义方法,这样一来字符串如果没有这个方法他就会查找原型上的方法,如果有就调用

const s = ""
String.prototype.fn1 = () => console.log(100);
Object.prototype.fn2 = () => console.log(200);
s.__proto__.__proto__.fn3 = () => console.log(300);
s.fn1() // 100
s.fn2() // 200
s.fn3() // 300

代码验证:原型链的顶端

每个对象都有一个 __proto__ 属性,用于访问它原型上的属性或方法

原型链的顶端为 null

const arr = []
console.log(arr.__proto__); // Array
console.log(arr.__proto__.__proto__); // Object
console.log(arr.__proto__.__proto__.__proto__); // Null
评论区
头像