JavaScript 原型鏈?zhǔn)菍崿F(xiàn)對象與對象之間繼承關(guān)系的核心機制。這里有一個簡單的例子來解釋原型鏈的工作原理:
Person
:function Person(name, age) {
this.name = name;
this.age = age;
}
Person
的原型上添加一個方法 sayHello
:Person.prototype.sayHello = function() {
console.log('Hello, my name is ' + this.name);
};
student
,并將其原型設(shè)置為 Person.prototype
:var student = Object.create(Person.prototype);
此時,student
對象會繼承 Person.prototype
上的方法和屬性。
student
對象添加自己的屬性和方法:student.name = 'John';
student.age = 20;
student.sayHello = function() {
console.log('Hello, I am a student and my name is ' + this.name);
};
現(xiàn)在,student
對象有了 Person.prototype
上的 sayHello
方法,同時也擁有了自己特有的屬性和方法。
這就是 JavaScript 原型鏈的簡單實現(xiàn)。當(dāng)一個對象需要訪問另一個對象的屬性和方法時,它會沿著原型鏈查找。如果找到相應(yīng)的屬性和方法,就會停止查找;如果沒有找到,會繼續(xù)沿著原型鏈向上查找,直到找到或者到達原型鏈的頂端(null
)。