老师有几个问题
来源:3-5 getter 与 setter(2)
hyperse
2020-09-17 23:14:17
1、为什么我的打印结果是这样啊:

2、还有
STATUS_MAP中的键值对是如何与形参val对应到的?
3、代码中的两个注释理解的对吗?
代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>getter与setter——音乐播放器例子 </title>
<style type="text/css">
div{
font-size: 299x;
}
</style>
</head>
<body>
<div id="app">
<div class="play-btn"></div>
</div>
<script>
class AudioPlayer{
constructor(){
this._status = 0; //要修改的属性
this.status = 0; //程序初始化时候的值
//this.init();
}
//
// init(){
// new Audio();
// }
//
get status(){
return this._status;
}
set status(val){
const STATUS_MAP = { //STATUS_MAP中的键值对是如何与形参val对应到的?
0:'暂停',
1:'播放',
2:'加载中'
};
document.querySelector('#app .play-btn').innerText = STATUS_MAP;
this._status = val;
}
}
const audio = new AudioPlayer();
</script>
</body>
</html>
2回答
好帮手慕星星
2020-09-18
同学你好,问题解答如下:
1、修改为这句就对了:document.querySelector('#app .play-btn').innerText = STATUS_MAP[val];
innerText属性是修改dom中的内容,this._status = val;这句是根据传入的val值修改属性值。例如


2、STATUS_MAP是一个字面量对象,通过属性获取属性值,可以使用[]方式,例如


所以可以通过传入的参数val来从STATUS_MAP对象中相对应的值。
3、注释理解的没问题
祝学习愉快!
hyperse
提问者
2020-09-17
哦不好意思是忘记传[val]了,那是不是
document.querySelector('#app .play-btn').innerText = STATUS_MAP[val];
这句是改dom中的内容,
this._status = val;这句是改js中的标志位?