JS类简介
本帖最后由 马黑黑 于 2022-7-22 12:30 编辑js的类简介 | 马黑黑
JS一开始没有纯粹意义的类(class),甚至根本就没有类。但现在,JS也可以像模像样地创建和使用类了:
class Pig {
//类属性代码
//类方法代码
}
嗯,看上去,和创建一个对象的结构差不多,但类用的关键字不是let、var、const,而是 class ,class 就是类。
类其实说的是一类对象的模板。比方说,如果将猪作为一个类,则它是大类,可以细分为很多小类。猪作为一个类存在时,是猪种族这一对象的集合,这个类可以集成类模板所应有的属性(姓名、年龄、颜色、体重等)和方法(吃食、运动、睡觉和长膘等),然后,使用了该模板的实例(比如一头猪的个体),都能应用这些封装好的属性和方法。让我们继续创建我们的 Pig 类,我们先来构造类的属性:
class Pig {
// 创建类的属性
constructor(name, age, color,weight) {
this.name = name;
this.age = age;
this.color = color;
this.weight = weight;
}
}
我们通过使用关键字 constructor 来构造类的各个属性,这与其他编程语言的创建机制是一致的。constructor 是构造器,它要构造类的属性,需要在 constructor 后面用小括号将属性名称罗列出来,各属性之间用逗号隔开。紧接着,用花括号来定义各个属性项目,需要用到关键字 this 来定义类的各个属性。这里,我们使用constructor 一口气创建了 Pig 类的 name、age、color 和 weight 等四个属性,将来类的应用实例就可以通过类似 obj.name 这样的方式来处理实例基于类的各个属性。
类还能封装方法,例如,Pig 类中,猪猪个体平均每摄入1公斤的食物(含水分)就能长膘0.2公斤,那么,在上面 Pig 类的创建基础上,我们把长膘的方法也封装进去,使得 Pig 这个类模板更为齐备或(和)更接近我们创建类的目的:
class Pig {
// 创建类的属性
constructor(name, age, color,weight) {
this.name = name;
this.age = age;
this.color = color;
this.weight = weight;
}
// 创建类的方法
grow(food) {
this.weight += food * 0.2;
return this.weight;
}
}
注意,在类里封装方法,不能使用 function 关键字,直接写上方法(函数)名称,方法(函数)的后续构造则和普通函数的做法一样。
好,现在,Pig 这个类拥有了属性和方法,已经是一个齐备的对象模板了,我们可以创建实例来使用这个模板:
let mypig = new Pig(); // 创建 Pig 类的一个实例 mypig
这里,mypig 就是 Pig 类的一个实例,只是这个实例现在内容是空的,我们需要根据实际情况给出一些类所需要的基本信息:
mypig.name = '阿黑';
mypig.age = 1;
mypig.color = '黑色';
mypig.weight = 250;
当然,如果愿意,我们也可以在创建新实例时就将这些属性值按类指定的属性顺序一同赋值:
let mypig = new Pig('阿黑',1,'黑色',250);
有了类的实例以及提供了实例个体的属性,则实例个体也就可以拥有了类提供的方法,比方给阿黑喂食后其长膘的方法:
let w = mypig.grow(20); //摄入20公斤食物后长膘:调用类中的 grow() 方法
console.log(w); // → 254
猪猪今天表现不错,奖励一朵小红花,额不,奖励个夜宵:
mypig.grow(10);
现在,mypig 的体重是多少呢?
console.log(mypig.weight); // → 256
JS类还是很多知识,不过这里是简介,主要目的是认识类的创建与类的实例(即类的应用),一般了解性的基础知识介绍。JS类还在发展中,希望将来它能告别语法糖的角色,拥有真正面向对象(oop)的本事。
JS类以后会发扬光大的。学习了,慢慢去理解。谢谢老黑!{:4_190:} 考虑得真周到细腻{:4_173:} 樵歌 发表于 2022-7-22 15:55
考虑得真周到细腻
套用现在通用语:应周尽周 加林森 发表于 2022-7-22 13:21
JS类以后会发扬光大的。学习了,慢慢去理解。谢谢老黑!
类选在做大型项目时也会用到 创造类以后才能赋值么,看你前面是直接赋值的啊。 马黑黑 发表于 2022-7-22 18:20
类选在做大型项目时也会用到
嗯嗯。 红影 发表于 2022-7-22 18:49
创造类以后才能赋值么,看你前面是直接赋值的啊。
类,制作抽象性质的定义,比如这个 Pig 类,有 name,age,color,weight 等属性,但这些好比你制作的表格里,开头的 姓名、年龄、肤色、体重等一样,具体到谁的名字,类不可能实现就定义,类定义的就是表头的东东,上层建筑性质的。 马黑黑 发表于 2022-7-22 20:12
类,制作抽象性质的定义,比如这个 Pig 类,有 name,age,color,weight 等属性,但这些好比你制作的表 ...
是用来分门别类的吧。 马黑黑 发表于 2022-7-22 18:20
套用现在通用语:应周尽周
直好玩,把猪的一生统统概括了 樵歌 发表于 2022-7-22 21:15
直好玩,把猪的一生统统概括了
是的吧{:5_117:} 以前我学习3.0swf播放器有as语句,凡是加频谱进去都要建类文件,好久没有玩swf播放器,那天别人问我频谱怎么加,我居然都忘记了,后来再去看看以前的制作,才把他频谱加进类文件,所以一旦放弃了就是很难捡起来的。。。。不过swf是真的不用可惜的,大家都看不见了,但我感觉这里的类文件完全和as语句不一样,但我感觉道理是一样的 小辣椒 发表于 2022-7-22 22:48
以前我学习3.0swf播放器有as语句,凡是加频谱进去都要建类文件,好久没有玩swf播放器,那天别人问我频谱怎 ...
所有编程工具,它们很多地方都相通
页:
[1]