目录
(1)问题一:我们想要在点击按钮二的时候改变字体大小,如何写呢?
(2)问题二:有的人又说,那直接再写一遍好了,把原来父类的construtor方法内容全部照搬过来,只是多了一个fontSize属性而已,请问这样可以吗?
让你彻底学会class类~
我们通过一个例子来说明这个class类的原理以及如何使用,,,
我们想要实现的功能就是:根据用户输入的内容点击不同的按钮生成两种不同的语句,并输出显示
先写一个功能html。然后开启我们的class学习之路
<input type="text">
<button class="btn1">自动生成语句一</button>
<button class="btn2">自动生成语句二</button>
<p></p>
接着我们先用原生js获取到每个标签
<script>
const input = document.querySelector('input'),
btn1 = document.querySelector('.btn1'),
btn2 = document.querySelector('.btn2'),
p = document.querySelector('p')
</script>
1、基本概念
类可以看做是对象的模板,用一个类可以创建出许多不同的对象
2、基本用法
calss 类名 {} 没有分号,类名首字母大写,内容写在花括号里面。实例化执行构造方法,所以必须有构造方法constructor ,但可以不写出来。在构造方法constructor 中定义属性,在构造方法constructor外面定义方法。
3、class与构造函数的区别
大家一听类名首字母大写?就会想起来构造函数,构造函数也是首字母大写,其他class和构造函数都是自家人,Class在语法上更加贴合面向对象的写法,实现继承更加易读、易理解,更易于写java等后端语言的程序员使用,本质上还是语法糖,使用prototype;用typeof检测都是function类型。 那是不是也可以用new生成实例呢?答:正确
接下来我们来定义一个类,然后再生成一个实例。
注意:这个实例要写在定义类的后面,因为class是没有什么声明提升这样的功能的。
我们可以看到上面创建的实例,明显是个空实例,因为构造函数的同门师兄弟class里面没有内容,我们要想把他丰富起来,例如添加属性或者方法,这些属性或方法是每次生成实例都会各自添加的,也就是说我们要让每个实例都有自己特有的属性,但是都享用同一套代码,这么一想,好像挺方便的,如何写呢?
我们这时就要用到constructor了,constructor是class里面的一个方法,每次new的时候就会触发这个constructor,我们可以通过constructor定义2个参数
4、constructor的使用
这里创建实例的时候传入的2个参数,此时this.text就被赋值了‘我输入了’,也就是实例的属性text这时就被赋值了‘我输入了’这个字符串。
定义完了属性,如何定义方法?
5、自定义方法
方法直接写就行,在class里面创建方法也不需要写function关键字,也不需要用this。
这个方法就代表,当触发该方法的时候,p标签里面的内容就会变成Generatestate实例的text属性+用户输入的内容,p标签的字体颜色就会变成实例的color属性。这两个属性都是根据传入的参数来动态变化的。
此时我们来给按钮添加点击事件,来触发实例里面的showWord函数