对象中的方法 VS 类中的方法
阅读 1.9k
不知道大家有没有关注过一个问题,在ES6之后,在类中定义的方法和对象中的方法,写法似乎一样,那么这两者真的完全相同吗?
对象中的方法
我们先来看对象中的方法:
const user = {
name: 'Olaf',
sayName1: function () {
console.log('way1: ', this.name)
},
sayName2() {
console.log('way2: ', this.name)
},
sayName3: () => {
console.log('way3: ', user.name)
},
}
在上面代码中,我们使用了三种方式来写sayName
方法,因为对象是Key-Value
形式的,所以,箭头函数的写法中,函数名和函数体之间是用冒号
来分开的。
注意:sayName2是sayName1的简写方式,将冒号
和function
关键字省略了。
类中的方法
ES6推出了class
关键字,用来定义类:
class Person {
constructor(name) {
this.name = name
}
sayName1 = function () {
console.log('way1: ', this.name)
}
sayName2() {
console.log('way1: ', this.name)
}
sayName3 = () => {
console.log(this.age)
}
}
上面代码,定义了一个Person
类,其中sayName也使用了三种方式
来进行书写✍️,和对象中的方法不同的是,类中的方法名
和方法体
之间其实使用的是=号
来进行分开的。
注意:和对象中的方法省略方式类似,类中定义的方法也有省略写法,sayName2就是sayName1的简写方式,将=号
和function
关键字省略了。
小结
如果都用省略写法,类中方法的省略写法和对象中方法的省略写法是一样的,会给人一种它们二者写法一样的错觉,但通过仔细分析后,发现它们本质上却是不同的。
最后编辑于: 2022-06-28