原型链,创建Student构造函数,Person构造函数,Student为Person子类,stu为Student的实例对象,通过打印输出或绘图的方式表示stu对象的原型链条
时间: 2024-12-02 08:19:56 浏览: 3
构造函数+原型模式构造js自定义对象(最通用)
原型链(Prototype chain)是JavaScript中的一种机制,用于实现对象的继承。当试图访问一个对象的属性或方法时,如果该对象自身不包含这个属性,JavaScript会在它的构造函数提供的原型对象上查找,直到找到或者达到原型链的终点(通常是`Object.prototype`)。这使得子类能够继承父类的属性和方法。
对于创建Student和Person构造函数,假设它们如下:
```javascript
function Person(name) {
this.name = name;
}
Person.prototype.sayName = function() {
console.log('I am a person named ' + this.name);
}
function Student(name, major) {
Person.call(this, name); // 继承Person的构造函数
this.major = major;
}
// 子类Student继承了Person的原型
Student.prototype = Object.create(Person.prototype);
Student.prototype.constructor = Student; // 设置构造函数
let stu = new Student('John', 'Computer Science');
```
当我们创建`stu`这个Student对象时,它首先会有一个自身的`__proto__`指向`Person.prototype`。由于`Student.prototype`也继承自`Person.prototype`,所以形成了原型链结构:
- `stu`
- `__proto__`: `Person.prototype`
- 自身实例属性: `major`
- `Person.prototype`
- `sayName`方法
- `__proto__`: `Object.prototype`
要直观地表示这种链状结构,通常不会直接打印出整个原型链,因为那可能会很长。但在调试或理解继承机制时,可以利用`console.log(Object.getPrototypeOf(stu))`查看`stu`的直接原型,然后递归向上追踪。图形化展示则可以用一些工具库来帮助可视化,例如使用浏览器的开发者工具或专门的原型链分析插件。
阅读全文