老师,我的问题如下。

来源: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回答

好帮手慕星星

2019-10-07

同学你好,

this._status = 0;是定义属性,而 this.status = 0是调用下面设置的status方法,设置状态为0,不是一个意思哦,如下:

http://img.mukewang.com/climg/5d9add5009c20b7d08920545.jpg

给this.status等号赋值相当于调用set中的status方法,0是参数val ,从而给元素中添加内容,修改_status属性值。

自己测试理解下,祝学习愉快!

0

0 学习 · 10739 问题

查看课程