js是一种面向原型的语言,原型允许对象共享属性和方法;原型即Prototype,在控制台查看变量时经常能看到;
// 创建一个构造函数
function Dog(name, breed) {
this.name = name;
this.breed = breed;
}
// 在Dog的原型上添加一个共享的方法
Dog.prototype.bark = function () {
console.log(this.name + " 在吃饭!");
};
// 创建两个狗的实例
var dog1 = new Dog("panghu", "Golden Retriever");
var dog2 = new Dog("bobo", "Labrador");
// 调用共享的方法
dog1.bark(); // 输出: panghu 在吃饭!
dog2.bark(); // 输出: bobo 在吃饭!
// 查看对象的原型
console.log(Object.getPrototypeOf(dog1) === Dog.prototype); // 输出: true
console.log(Object.getPrototypeOf(dog2) === Dog.prototype); // 输出: true
//原型链是JavaScript中对象之间关系的一种表示方式,每个对象都有一个原型,并且可以通过原型链访问其父对象的属性和方法。
//通过修改原型来影响所有实例:
// 修改原型上的方法
Dog.prototype.eat = function () {
console.log(this.name + " is eating.");
};
// 现在所有Dog的实例都具有新的方法
dog1.eat(); // 输出: panghu is eating.
dog2.eat(); // 输出: bobo is eating.
通过原型模式,我们可以通过控制一个原型,来实现对继承了这个原型的对象的控制,比如修改函数等功能;