5-4练习

来源:5-4 编程练习

qq_林二爷_0

2018-09-29 20:14:05

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>
    <body>
        <script type="text/javascript">
        	
        	var store=(function(){
        		//空对象,存放私有数据
        		var privateStore={};
        		return {
	        		//获取信息
		           	get:function(){
		           		return privateStore;
		           	},
		           	
		           	//添加或修改信息
		           	set:function(name,key,value){
		           		if(Object.prototype.toString.call(key)!=='[Object Object]'){
		           			privateStore[name][key]=value;
		           		}else{
		           			privateStore[name]=key;
		           		}
		           	}
	           	}
        	})();
	        //添加一个学生某一项信息
	        store.set("小明","age",23);
	        //添加一个学生全部信息
	        store.set("小强", {"age":23,"sex":"男"});
	        //调用get方法输出已添加的所有信息
	        console.log(store.get());
        </script>
    </body>
</html>

1.为什么报错提示“age为undefined”?
2.在这里store被定义为一个函数,为什么它可以访问自己内部的函数?
3.为什么把整个store的函数体包起来再加个()?

写回答

2回答

好帮手慕夭夭

2018-09-30

1. ,判断添加不对 , 如下改为小写的 :

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

2.因为代码中先是给创建了学生的某一项信息 ,此时这个学生还没有创建 ,所以需要先创建一个小明,再设age .否则privateStore[name][key]=value;相当于undefined[key]=vlaue .

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

或者直接在方法中加入判断  :

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

这样当你没有创建这个学生时 ,却添加了这个学生的某一项信息时 , 代码会帮你创建这个学生 .

3.!==是不等于的意思 ,抱歉由于老师的失误 , 把代码看错了 . 给同学带来不便 , 希望同学能够谅解 . 以后老师也会更加努力 , 更加认真细心的为同学解答问题 , 给同学们带来更优质的服务呢

祝学习愉快 ,望采纳



0

好帮手慕夭夭

2018-09-30

  1. 因为代码中如下真好写相反了 ,如下:

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

    改为如下:

    当传入的第二个参数不是一个对象时 , 要执行privateStore[name][key] = value;

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

    而当第二个参数传入一个对象时 , 则执行privateStore[name] = key;

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

      2.同学的第一个问题和第二个问题可以放在一起解释 .因为函数加()()表示立即执行 , 所以运行代码    时 ,会自己执行()里面的内容 , 然后执行结果返回给store ,它返回的是一个对象 , 可输出store:

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

返回的结果 ,store返回的是一个对象 ,相当于store={get:xx,set:xx} ,  所以方法就可以调用了

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



 

   同学掌握的知识还不是很扎实 , 建议多回顾一下视频 . 巩固所学知识 .  希望解答了你的疑惑 , 祝学习愉快 ,望采纳

0
hq_林二爷_0
h 第一个问题我没错啊,我难道不是写的!==么?,这个不就是代表不等于的意思么?
h018-09-30
共1条回复

0 学习 · 4826 问题

查看课程