上一节我们详细介绍了如何访问JS对象中的属性,本节我们将学习JS对象中的方法。JS对象方法是指在对象内部定义的函数。通过将函数作为对象的属性,我们可以将其称为对象的方法。对象方法可以访问并操作对象的属性,也可以执行与对象相关的操作。
比如我们有一个计算器对象Calc,我们在Calc内封装了四个+、-、*、/的函数(对象的方法),四个函数能够调用对象内的两个参数进行运算并将结果在控制台打印。
/* 计算器Calc */
const Calc={
/* 属性 */
a:0,
b:0,
/* 方法 */
//1. +
add: function(){ console.log(this.a + this.b) },
//2. -
sub: function(){ console.log(this.a - this.b) },
//3. *
mul: function(){ console.log(this.a * this.b) },
//4. /
div: function(){ console.log(this.a / this.b) },
//5.获取a,b
get:function(a,b)
{
this.a=a,this.b=b;
}
}
/* 进行测试 */
Calc.get(1,1);
Calc.add(),Calc.sub(),Calc.mul(),Calc.div();//2、0、1、1对于计算器对象,我们只需要一个就好了;可是如果对象是学生呢?要知道学生人数可是很多的,此时就需要我们批量创建对象。怎么批量进行对象创建?此处我有3种方法,首推class声明类配合new创建,其次是构造函数+new创建,最后是Object.create()原型继承的方式创建对象。
1. class类名+new(特点是有constructor构造函数):
/* 学生:姓名、年龄、性别三要素 */
/* 1. class类+new的方式创建对象 */
class Student{
constructor(name,age,gender){
this.name=name
this.age=age
this.gender=gender
}
greet(){
console.log(`你好,我的名字是${this.name}!`);
}
}
//配合new关键字进行批量创建:
const dotcpp_user01=new Student('dotcpp_user01',18,'male')
const dotcpp_user02=new Student('dotcpp_user02',18,'male')
const dotcpp_user03=new Student('dotcpp_user03',18,'male')2. 构造函数+new创建:
/* 学生:姓名、年龄、性别三要素 */
/* 2. 构造函数+new创建 */
function Student(name,age,gender){
this.name=name
this.age=age
this.gender=gender
this.greet=function(){
console.log(`你好,我是${this.name}!`);
}
}
//配合new关键字进行批量创建:
const dotcpp_user01=new Student('dotcpp_user01',18,'male')
const dotcpp_user02=new Student('dotcpp_user02',18,'male')
const dotcpp_user03=new Student('dotcpp_user03',18,'male')3. Object.create()函数进行批量创建:
/* 学生:姓名、年龄、性别三要素 */
/* 3. Object.create()进行批量创建 */
const Student = {
name: '', age: 0, gender: '',
greet() {
console.log(`你好,我是${this.name}!`);
}
}
const dotcpp_user01 = Object.create(Student)
dotcpp_user01.name='dotcpp_user01'
dotcpp_user01.age=18
dotcpp_user01.gender='male'总结:这三种方式本质都是一样的,只是形式不一样而已。本节重在学习如何使用对象方法和对象批量创建的技巧,使得读者对JS对象有一个更深刻的理解。
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程