JavaScript 原型
什么是原型?
在JavaScript中,原型是一个核心概念,它是JavaScript实现对象继承的基础机制。与传统的基于类的继承不同,JavaScript使用原型链的方式来实现对象之间的继承关系。
每个JavaScript对象都有一个与之关联的原型对象。当我们试图访问一个对象的属性或方法时,如果该对象本身没有这个属性或方法,JavaScript引擎会自动去对象的原型上查找。这种机制称为"原型继承"。
原型链基础
每个JavaScript对象都有一个特殊的内部属性[[Prototype]]
(在一些浏览器中可以通过__proto__
访问),它指向该对象的原型。原型本身也是一个对象,因此也有自己的原型,这样就形成了一个原型链。
原型链的终点通常是Object.prototype
,而Object.prototype
的原型是null
。
访问和设置原型
使用Object.getPrototypeOf()
和Object.setPrototypeOf()
const person = {
name: '张三',
sayHello() {
return `你好,我是${this.name}`;
}
};
const student = {
grade: '一年级'
};
// 设置student的原型为person
Object.setPrototypeOf(student, person);
// 获取student的原型
console.log(Object.getPrototypeOf(student) === person); // 输出:true
// 通过原型链调用方法
console.log(student.sayHello()); // 输出:"你好,我是张三"