JavaScript 原型链是实现对象间继承和共享属性的主要机制。在 JavaScript 中,每个对象都有一个指向其原型的内部链接。当试图访问一个对象的属性时,如果该对象内部不存在这个属性,那么 JavaScript 引擎会沿着原型链向上查找,直到找到属性或者到达原型链的顶端(null
)。
以下是原型链的运用方法:
-
创建构造函数:
首先,我们需要创建一个构造函数,它将作为我们创建的对象的基础。构造函数通常包含一个
prototype
属性,该属性指向一个原型对象。function Person(name, age) { this.name = name; this.age = age; }
-
在原型对象上定义属性和方法:
接下来,我们在构造函数的
prototype
对象上定义属性和方法,这样所有通过Person
构造函数创建的对象都可以访问这些共享资源。Person.prototype.sayHello = function() { console.log('Hello, my name is ' + this.name); };
-
创建对象实例:
现在,我们可以使用
Person
构造函数创建对象实例,并通过原型链访问在prototype
对象上定义的属性和方法。var person1 = new Person('Alice', 30); var person2 = new Person('Bob', 25); person1.sayHello(); // 输出 "Hello, my name is Alice" person2.sayHello(); // 输出 "Hello, my name is Bob"
-
原型链继承:
要实现原型链继承,我们可以在一个构造函数的原型对象上设置另一个构造函数的引用。这样,子类可以访问父类的原型对象上的属性和方法。
function Student(name, age, course) { Person.call(this, name, age); this.course = course; } // 设置 Student 的原型对象为 Person 的实例,实现继承 Student.prototype = Object.create(Person.prototype); Student.prototype.constructor = Student; // 在 Student 的原型对象上添加特定于学生的属性和方法 Student.prototype.sayCourse = function() { console.log('I am studying ' + this.course); }; var student1 = new Student('Charlie', 22, 'JavaScript'); student1.sayHello(); // 输出 "Hello, my name is Charlie" student1.sayCourse(); // 输出 "I am studying JavaScript"
通过以上方法,我们可以充分利用 JavaScript 原型链实现对象间的继承和共享属性。