javascript 中的原型对象通过 __proto__ 属性访问,该属性指向构造函数的 prototype 对象。在 es5 中推荐使用 object.getprototypeof() 获取实例的原型,而在 es6 中可以通过 class 语法更直观地定义和继承原型链。

如何通过构造函数访问原型对象
使用构造函数创建实例时,实例的 __proto__ 指向构造函数的 prototype。这是最基础的原型访问方式。

function Person(name) {
this.name = name;
}
Person.prototype.sayHello = function() {
console.log('Hello, ' + this.name);
};
const person = new Person('Alice');
console.log(person.__proto__ === Person.prototype); // true
person.sayHello(); // Hello, AliceES6 Class 如何关联原型对象
ES6 的 class 语法是构造函数的语法糖,其原型关系与构造函数一致。子类通过 extends 继承父类的原型对象。
立即学习“Java免费学习笔记(深入)”;

class Animal {
constructor(name) {
this.name = name;
}
speak() {
console.log(this.name + ' makes a noise.');
}
}
class Dog extends Animal {
speak() {
console.log(this.name + ' barks.');
}
}
const dog = new Dog('Rex');
console.log(dog.__proto__ === Dog.prototype); // true
console.log(Dog.prototype.__proto__ === Animal.prototype); // true
dog.speak(); // Rex barks.原型链查找机制的具体表现
当访问一个对象的属性时,如果该对象本身没有该属性,JavaScript 会沿着原型链向上查找,直到找到该属性或到达原型链顶端(null)。


















