// 父类
function Animal(name) {
this.name = name;
}
Animal.prototype.sleep = function() {
console.log(\\\"动物正在睡觉\\\");
};
// 子类
function Cat(name, color) {
Animal.call(this, name); // 调用父类构造函数复制属性
this.color = color;
}
// 使用 Object.assign() 方法复制父类的方法
Object.assign(Cat.prototype, Animal.prototype);
// 子类中可以覆盖父类的方法
Cat.prototype.sleep = function() {
console.log(\\\"猫正在打盹\\\");
};
// 父类
function Animal(name) {
this.name = name;
}
Animal.prototype.sleep = function() {
console.log(\\\"动物正在睡觉\\\");
};
// 子类
function Cat(name, color) {
this.name = name;
this.color = color;
}
// 子类的原型对象指向父类的实例
Cat.prototype = new Animal();
Cat.prototype.catchMouse = function() {
console.log(\\\"猫正在抓老鼠\\\");
};
// 子类中可以覆盖父类的方法
Cat.prototype.sleep = function() {
console.log(\\\"猫正在打盹\\\");
};
// 父类
class Animal {
constructor(name) {
this.name = name;
}
eat() {
console.log(\\\"动物正在吃食物\\\");
}
sleep() {
console.log(\\\"动物正在睡觉\\\");
}
}
// 子类
class Cat extends Animal {
constructor(name, color) {
super(name); // 调用父类构造函数抄写属性
this.color = color;
}
catchMouse() {
console.log(\\\"猫正在抓老鼠\\\");
}
// 子类中可以覆盖父类的方法
sleep() {
console.log(\\\"猫正在打盹\\\");
}
}
// 创建对象
const animal = {
name: \\\"动物\\\",
eat() {
console.log(\\\"动物正在吃食物\\\");
},
sleep() {
console.log(\\\"动物正在睡觉\\\");
}
};
const cat = Object.create(animal); // 创建 cat 对象,并将 animal 对象设置为其原型
cat.name = \\\"猫\\\";
cat.color = \\\"黄色\\\";
cat.catchMouse = function() {
console.log(\\\"猫正在抓老鼠\\\");
};
// 子类中可以覆盖原型对象的方法
cat.sleep = function() {
console.log(\\\"猫正在打盹\\\");
};
内容优化:ChatGPT
内容来源:《JavaScript 语言精髓与编程实战》
原创文章,作者:小道研究,如若转载,请注明出处:https://www.sudun.com/ask/34510.html