js问题,下面代码中有两个问题?

class Person{
                  constructor(name,age,sex){
                        this.name = name;
                        this.age = age;
                        this.sex = sex;
                  }
                  showSelf(){
                        alert(`我叫做${this.name},今年${this.age}岁,性别是${this.sex}`)
                  }
            }
            // var p = new Person("超人",17,"男");
            // p.showSelf()
            class worker extends Person{
                  constructor(name,age,sex,job){
                        super(name,age,sex);
                        this.job = job;
                  }
                  showJob(){
                        alert(`我的工作是${this.job}`);
                  }
            }
            var p1 = new worker("超人",17,"男","维护世界和平");
            p1.showJob()

showSelf(){

                        alert(`我叫做${this.name},今年${this.age}岁,性别是${this.sex}`)

                  }

问题一:这个里面为什么使用单引号${this.name}才能生效,使用双引号就不行?

问题二:$在这里是什么意思?作用是什么?

ES6引入的模板字符串,自己可以好好研究下es6,都是很基础的内容。

https://es6.ruanyifeng.com/#docs/string#%E6%A8%A1%E6%9D%BF%E5%AD%97%E7%AC%A6%E4%B8%B2

~~这不是单引号,这个是反引号,这是js 的ES6字符串拼接变量的语法规范, 用${}来承载变量

反引号可以直接拼接变量。就不用+params+ 这样去写。

${}这个在jsp中是el表达式,在js中也有这样的规范来获取变量值。

嗯了解一下js  es6的语法,这个是模板字符串,还有promise,let,const,map,set等等还有拓展了数组字符串的方法(flat,find等等)。建议看阮一峰es6的书,一搜就有