用js定义一个对象,打印整个原型链上的相关__proto_, prototype, constructor
时间: 2024-11-13 21:22:14 浏览: 24
在JavaScript中,你可以通过创建一个简单的对象来展示原型链的概念。首先,我们定义一个基础对象`Person`,然后创建一个派生自`Person`的对象`Student`。
```javascript
// 定义基础构造函数 Person
function Person(name) {
this.name = name;
}
// 在Person原型上添加一个方法
Person.prototype.sayHello = function() {
console.log('Hello, my name is ' + this.name);
};
// 定义派生构造函数 Student
function Student(name, grade) {
Person.call(this, name); // 继承Person的构造过程
this.grade = grade;
}
// 继承了Person的原型
Student.prototype = Object.create(Person.prototype);
Student.prototype.constructor = Student; // 设置正确的构造函数引用
// 创建一个Student实例
var student = new Student('Alice', 9);
console.log(student.__proto__); // 打印Student的原型,即Person.prototype
console.log(student.prototype); // 也是Person.prototype,因为已经重写了
console.log(student.constructor); // 输出Student,这是当前构造函数
```
在这个例子中,`student`的`__proto__`指向其构造函数的原型,即`Person.prototype`;而`prototype`属性同样指向`Person.prototype`,因为它已经被重写了。`constructor`属性则显示了实例所属的构造函数,这里是`Student`。
阅读全文