老师,我的问题如下。
来源:3-5 getter 与 setter(2)
慕斯0469344
2019-10-04 22:07:56
// 音乐播放器--暂停,播放中,加载中
class AudioPlayer{
constructor(){
// 0-暂停,1-播放,2-加载中
this._status = 0;
this.status = 0;
this.init();
}
init(){
const audio = new Audio();
audio.src = '....';
audio.oncanplay = () =>{
audio.play();
this.status = 1;
}
}
get status(){
return this._status;
},
set status(val){
const Status_Map = {
0:'暂停',
1:'播放',
2:'加载中'
};
document.querySelector('#app .play-btn').innerText = Status_Map[val];
this._status = val;
}
}
const audio = new AudioPlayer();老师,您看在这个示例代码中,为什么视频中的老师定义了一个this._status = 0;还要再定义一个this.status =0;为什么在init中不能用this._status = 0代替状态的改变呢?
1回答
同学你好,
this._status = 0;是定义属性,而 this.status = 0是调用下面设置的status方法,设置状态为0,不是一个意思哦,如下:

给this.status等号赋值相当于调用set中的status方法,0是参数val ,从而给元素中添加内容,修改_status属性值。
自己测试理解下,祝学习愉快!
相似问题