这个可以吗?

这个可以吗?

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <title>5-4</title>

</head>

<body>

<script>

   function obj(name,sex,age){

    var per={

      name:name,

      sex:sex,

      age:age

    };

     this.get=function(attr){

     alert(per[attr]);

   };

     this.set=function(attr,attrV){

       per[attr]=attrV;

     }

     this.del=function(attr){

       delete per[attr];

     }

     this.getAll=function(){

       for(let i in per){

         alert(i+" : "+per[i]);

       };

    }

  }

   var text=new obj("张宇","male","17");

   //text.get("name");//提供根据属性名来查找属性方法.get()

   //text.set("life","hard");//提供设置属性的方法.set()

   //text.del("name");//提供删除属性的方法.del()

   //text.getAll();//提供显示所有属性及其值的方法.getAll()

//补充代码 

</script>

</body>

</html>


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕星星 2018-11-13 15:17:56

虽然写的方法可以实现,但是没有使用到闭包来完成,这样的数据存储是不安全的,应该提供一个接口来修改数据,而不是直接修改,参考:

http://img1.sycdn.imooc.com//climg/5bea7a790001270905420570.jpg

实例化Student函数之后,直接调用set和get方法即可。

自己完善测试下,祝学习愉快!

  • 提问者 Horizn #1
    这样是将数据也隐藏了,全部操作都只有使用提供的接口来进行的,这样理解可以吗?将数据的层级封装到闭包函数里面,在外面提供接口,而不是我之前直接将数据和接口放一起,实际上函数里面的对象可以不通过我的方法直接拿到?
    2018-11-13 15:28:53
  • 好帮手慕星星 回复 提问者 Horizn #2
    将数据也隐藏了,全部操作都只有使用提供的接口来进行的,这句话是对的。函数里的对象是局部的,需要调用方法来返回数据。
    2018-11-13 17:15:18
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
组件化思想开发电商网页 18版
  • 参与学习           人
  • 提交作业       467    份
  • 解答问题       4826    个

本路径带你通过系统学习HTML5、JavaScript、jQuery的进阶知识,不仅如此,还会学习如何利用组件化的思想来开发网页,知识点+案例,使得所学可以更好的得到实践。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师