关于class的表达式写法
来源:2-2 ES6中的类
soso_crazy
2019-07-05 11:49:09
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>Document</title>
</head>
<body>
<script>
// class表达式,可以立即执行class
let person = new (class {
constructor(name) {
this.name = name
}
sayName() {
console.log(this.name)
}
})('张三')
person.sayName()
//class
class Person {
constructor(name) {
this.name = name
this.sayName()
}
sayName() {
console.log(this.name)
}
speakName(name) {
console.log(name)
}
}
let people = new Person('李四')
Person.prototype.speakName('小五')
</script>
</body>
</html>
表达式的写法为什么不用在person.sayName()中传参?()()这种类似匿名函数自执行的写法在第二个括号传的参数是传进constructor()中还是传入constructor以外的方法中?
以上两种写法的区别是什么?各自的用法有什么区别?
用表达式写的class的constructor以外的方法是定义在实例化对象上的方法,还是定义在原型对象上?1回答
好帮手慕言
2019-07-05
1、因为 sayName 中使用的是this.name, 而this.name 是在constructor中定义的,并且在这里传参了。

2、第二个括号传的参数是传进constructor中的。
3、写法的区别:表达式写法的类,在使用完之后立即销毁. 直接声明的类 在使用完之后 还保留在内存中
4、用法的区别:如果一个类 你只想使用一次,那么就用表达式的写法。否则就用声明式写法
5、表达式写的class的constructor以外的方法是定义在原型对象上。
如果帮助到了你,欢迎采纳~祝学习愉快~
相似问题