在JavaScript中,prototype
是一个非常核心的概念,与面向对象编程(OOP)密切相关。每个JavaScript对象都有一个关联的原型(prototype)对象,这个原型对象包含了可以被子对象继承的属性和方法。
当你在一个对象上查找一个属性或方法时,如果该对象自身没有这个属性或方法,JavaScript会沿着该对象的原型链向上查找,直到找到该属性或方法或者查找到原型链的顶端(即Object.prototype
)为止。
例如:
function Dog(name) {
this.name = name;
}
Dog.prototype.bark = function() {
console.log(this.name + " says woof!");
};
var dog1 = new Dog("Buddy");
dog1.bark(); // Buddy says woof!
在上述代码中,Dog
是一个构造函数,bark
是一个定义在Dog.prototype
上的方法。当我们创建了一个新的Dog
实例(如dog1
),这个实例会继承其原型(即Dog.prototype
)上的所有属性和方法。因此,当我们调用dog1.bark()
时,JavaScript会在dog1
对象上查找bark
方法,如果找不到,它会沿着原型链向上查找,最终在Dog.prototype
上找到该方法并执行。
这种基于原型的继承模型是JavaScript与其他基于类的面向对象编程语言(如Java和C#)的一个主要区别。