set方法要怎么改

set方法要怎么改

function Studata(){

    var data = {

        name: "zhangyu",

        age: 18,

        sex: "man"

    }

    this._set = function(obj){

        data.name = obj.name;

        data.age = obj.age;

        data.sex = obj.sex;

    }

    this._get = function(){

        return data

    }

}


var stu = new Studata();


console.log(stu._get());

var newdata = {

    name:"xm",

    sex:"nan",

    age:23

}

stu._set(newdata)

console.log(stu._get());



当我的obj里面参数没写完整,如

newdata= {

   name:"xm",

    sex:"nan",

}

他的age就会是undefined,要怎么改才能让他保留原有的age呢?(同理保留sex,name)

正在回答

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

2回答

同学你好,这样做主要是为了数据的安全性。我们只提供接口get和set,不看内部结构。如果要使用的话,只需要知道这个方法是怎么用的,而不需要知道内部具体怎么实现的,直接用接口就行了。实际工作中也是这样的,我们一般是看不到内部代码是怎么实现的,只有一个接口去调用。

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

好帮手慕星星 2019-11-21 18:47:57

同学你好,代码中存在问题,建议按照任务提示中写:

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

对外提供的接口是get和set,私有函数是_get和_set。

另外,同学说的这个传参问题,可以使用for循环遍历传入的对象,判断属性值是否为undefined,然后进行相对应的操作。参考:

<script>
        function Studata() {
            var data = {
                    name: "zhangyu",
                    age: 18,
                    sex: "man"
                }
                // 对传入对象进行遍历,如果属性值为undefined,跳过当前循环;如果有属性值,修改data中的值
            function _set(obj) {
                for (var i in obj) {
                    if (obj[i] == undefined) {
                        continue;
                    } else {
                        data[i] = obj[i];
                    }
                }
            }
            this.set = function(obj) {

                return _set(obj);
            }

            function _get() {
                return data
            }
            this.get = function() {
                return _get();
            }
        }
        var stu = new Studata();
        // console.log(stu._get());
        var newdata = {
                name: "xm",
                sex: "nan"
            }
            // stu._set(newdata);
        stu.set(newdata);
        // console.log(stu._get());
        console.log(stu.get());
    </script>

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

  • 提问者 慕仰8375193 #1
    为什么定义一个_get后还要用get返回,实际开发中这样做有什么好处吗?
    2019-11-21 18:51:58
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

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

在线咨询

领取优惠

免费试听

领取大纲

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