主要用于我的学习笔记,不喜勿喷,有问题也欢迎大佬指点,小弟定将虚心请教
方法1、对象冒充
优缺点:对象冒充可以继承类,但是不能继承原型上的方法
function Person(name,age) {
this.name = name,
this.age = age,
this.getName = function () {
console.log(`我的名字是${this.name},我今年${this.age}岁了`)
}
}
function Web() {
Person.call(this)
}
let w = new Web()
console.log(w)
方法2 :原型继承
优缺点:
原型链实现继承 可以继承构造函数里面的属性和方法,也可以继承原型上的方法
实例化子类的时候没法给父类传参
function Teacher() {}
Teacher.prototype = new Person()
let t = new Teacher()
// console.log(t)
3、
<!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>Document</title>
</head>
<body>
</body>
<script>
//原型上的方法,实例对象
function Person(name,age) {
this.name = name,
this.age = age,
this.getName = function () {
console.log(`我的名字是${this.name},我今年${this.age}岁了`)
}
}
// let p = new Person()
// console.log(p.name, p.age)
// p.getName()
// Person.prototype.setSay = function () {
// console.log(`${this.name},${this.age}岁了`)
// }
// p.setSay()
// //静态方法
// Person.getWork = function () {
// console.log('我是一个静态方法')
// }
// Person.getWork()
// //es5继承方法
// //1、对象冒充可以继承类,但是不能继承原型上的方法
// function Web() { //
// Person.call(this)
// }
// let w = new Web()
// console.log(w)
// //2、原型链实现继承 可以继承构造函数里面的属性和方法,也可以继承原型上的方法
// //实例化子类的时候没法给父类传参
// function Teacher() {}
// Teacher.prototype = new Person()
// let t = new Teacher()
// console.log(t)
//原型链加构造函数的组合继承模式
function Students(name,age){
Person.call(this,name,age)
}
// Students.prototype = new Person()
// let s = new Students('赵云',20)
// console.log(s)
//方法2
Students.prototype = Person.prototype
let s = new Students('赵云',20)
console.log(s)
</script>
</html>
function Students(name,age){
Person.call(this,name,age)
}
// Students.prototype = new Person()
// let s = new Students('赵云',20)
// console.log(s)
//方法2
Students.prototype = Person.prototype
let s = new Students('赵云',20)
console.log(s)