平常我们经常会说定义一个类,new出一个对象,今天我们来探讨一下这两者的关系。
一.类和对象的关系
(1)接下来我们来创建一个学生类
class Studnet {
constructor(name, age) {
this.name = name
this.age = age
}
say() {
console.log('唱歌');
}
light() {
console.log('跳舞');
}
}
let s1 = new Studnet('小明', 20)
s1.say()
s1.light()
可以看出这个类里面有 name和age两个,和一些方法。
通过new就会创造出一个对象,然后传递参数过去。
在类的那一边就会接收到传递过来的参数。
分析一下:里面的this指向谁
通过打印里面的name可以发现:
console.log(name, 66666666666); //小明
也就是我们传递过去的实参,小明
打印构造函数里面的this,看下他指向的是谁
console.log(this);
打印的结果:
也就是构造函数的内部:
this.name 也就是代表 Stundent 这个类添加一个name属性
this.name=name 这是一个赋值的过程,也就是实参传递的过程。
后面的方法,比如 唱歌的方法和跳舞的方法,都是挂载到prototype属性上的。
通过打印s1可以看出:
(2)生成不同的对象
说明:我们需要一个名字为小红,年龄为21的对象。
let s2 = new Studnet('小红', 21)
打印出的结果:
(3)在类上添加一个方法
class Studnet {
constructor(name, age) {
console.log(this);
console.log(name, 66666666666);
this.name = name
this.age = age
}
say() {
console.log('唱歌');
}
light() {
console.log('跳舞');
}
paly() {
console.log(打游戏);
}
}
let s1 = new Studnet('小明', 20)
let s2 = new Studnet('小红', 21)
console.log(s1);
console.log(s2);
s1.paly();
s2.paly()
查看的结果:
(4)得出结论
比如我们现在要去生产一部手机。
有华为手机,小米手机。这些都是手机的名字
每个手机的功能又不一样,这就像是里面的方法。
类就相当于已经配置好的一个车间一样。
通过调用这个类,也就是产生一个新的对象。
去生产不同的手机。