定义:深拷贝不仅将原对象的各个属性逐个复制出去,而且将原对象各个属性所包含的对象也依次采用深复制的方法递归复制到新对象上,所以对一个对象的修改并不会影响另一个对象。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>拷贝继承</title>
</head>
<body></body>
<script>
// 目的:让学生对象去继承人对象(人的构造函数和原型中的属性和方法)
// 人的构造函数
function Person(name, age) {
this.name = name
this.age = age
this.eat = function () {
console.log(this.name + '喜欢吃零食!')
}
}
// 人的原型
Person.prototype.sex = '女生'
Person.prototype.sleep = function () {
console.log(this.name + '喜欢睡懒觉!')
}
// 学生的构造函数
function Student(score) {
this.score = score
this.study = function () {
console.log(this.name + '喜欢努力学习!')
}
}
// 学生的原型
Student.prototype.className = '二班'
Student.prototype.playLove = function () {
console.log(this.name + '喜欢搞对象!')
}
var p1 = new Person('小花', 15)
var stu = new Student(120)
for (x in p1) {
stu[x] = p1[x]
}
// 1、学生构造函数中的属性和方法
console.log(stu.score)
stu.study()
// 2、学生原型中的属性和方法
console.log(stu.className)
stu.playLove()
// 3、人的构造函数中的属性和方法
console.log(stu.name)
console.log(stu.age)
stu.eat()
// 4、人的原型中的属性和方法
console.log(stu.sex)
stu.sleep()
</script>
</html>
利用对象的深拷贝方式即可,可以继承父类中构造函数和原型中的所有的属性和方法。