|
|
请马上登录,朋友们都在花潮里等着你哦:)
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 马黑黑 于 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)的本事。
|
评分
-
| 参与人数 4 | 威望 +180 |
金钱 +360 |
经验 +180 |
收起
理由
|
小辣椒
| + 50 |
+ 100 |
+ 50 |
赞一个! |
红影
| + 50 |
+ 100 |
+ 50 |
赞一个! |
樵歌
| + 50 |
+ 100 |
+ 50 |
赞一个! |
加林森
| + 30 |
+ 60 |
+ 30 |
很给力! |
查看全部评分
|