- 传统创建对象的方法 --> 构造函数
// 1.1 构造函数创建对象
function Star(name, song) {
this.name = name
this.song = song
// p1. 如果直接在这里,每个对象都会有一个sing方法,相比来说this比较浪费.
// 所以更推荐将方法放在原型上,使用时调用即可
// this.sing = function () {
// console.log()
// }
}
// p1.1 把方法挂在原型上
Star.prototype.sing = function () {
console.log('分享一首我的歌:' + this.song)
}
// 1.2 调用
const jay = new Star('周杰伦', 'mine')
console.log(jay)
// p2. 调用对象的方法
jay.sing()
- ES6 class类创建对象写法 --> class 语法糖
class Person {
// 2.1 构造函数
constructor(name, age) {
this.name = name
this.age = age
}
// 2.2 相比于 传统创建对象的方法, class类写法可以把方法直接丢在 class 里面
sayHi() {
console.log('大家好,我是' + this.name)
}
// 如果有更多方法,可以直接写在后面
sing() {
console.log('我会唱歌')
}
const zs = new Person('张三', 21)
console.log(zs)
zs.sayHi()
zs.sing()
// 2.3 extends 继承
// 使用场景:李四也需要用到 Person ,同时需要拓展一个 Hobby
class Hobby extends Person {
constructor(name, age) {
super(name, age)
this.sport = 'running'
}
sing() {
console.log('我会唱歌')
}
}
const ls = new Hobby('李四', 25)
console.log(ls)
ls.sing()
/* 实战出真知 */