老师有几个问题

来源:3-5 getter 与 setter(2)

hyperse

2020-09-17 23:14:17

1、为什么我的打印结果是这样啊:

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


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值修改属性值。例如

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

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

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

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

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

所以可以通过传入的参数val来从STATUS_MAP对象中相对应的值。

3、注释理解的没问题

祝学习愉快!

0

hyperse

提问者

2020-09-17

哦不好意思是忘记传[val]了,那是不是

document.querySelector('#app .play-btn').innerText = STATUS_MAP[val];

这句是改dom中的内容,

this._status = val;这句是改js中的标志位?

0

0 学习 · 10739 问题

查看课程

相似问题