三、JavaScript进阶-面向对象
ES6中的类和对象
创建类和对象
<!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</title>
</head>
<body>
<script>
class Star {
constructor(uname, age) {
this.uname = uname
this.age = age
}
say() {
console.log('Hello')
}
}
let ldh = new Star('刘德华', 18)
console.log(ldh)
ldh.say()
</script>
</body>
</html>
类的继承
<!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</title>
</head>
<body>
<script>
class Father {
money() {
console.log('father赚了100¥')
}
}
class Son extends Father {
}
let son = new Son()
son.money()
class Father2 {
constructor(x) {
this.x = x
}
money() {
console.log(`father赚了${100 + this.x}¥`)
}
}
class Son2 extends Father2 {
}
let son2 = new Son2(100)
son2.money()
class Father3 {
constructor(x, y) {
this.x = x
this.y = y
}
money() {
console.log(`father赚了${100 + this.x + this.y}¥`)
}
say() {
console.log(`我是father,我自己赚了${100 + this.x + this.y}¥`)
}
}
class Son3 extends Father3 {
constructor(x, y, n) {
super(x, y)
this.x = x
this.y = y
this.sonMoney = n
}
say() {
super.say()
console.log(`我是son,我自己赚了${this.x + this.y + this.sonMoney}¥`)
}
}
let son3 = new Son3(100, 100, 100)
son3.money()
son3.say()
</script>
</body>
</html>
类和对象的注意点
<!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</title>
</head>
<body>
<button>点击输出</button>
<script>
var _that
class Star {
constructor(uname, age) {
_that = this
this.uname = uname
this.age = age
this.btn = document.querySelector('button')
this.btn.onclick = this.sing
}
sing() {
console.log(this.uname)
console.log(_that.uname)
}
}
let person = new Star('刘德华', 21)
</script>
</body>
</html>