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)
正在回答
同学你好,这样做主要是为了数据的安全性。我们只提供接口get和set,不看内部结构。如果要使用的话,只需要知道这个方法是怎么用的,而不需要知道内部具体怎么实现的,直接用接口就行了。实际工作中也是这样的,我们一般是看不到内部代码是怎么实现的,只有一个接口去调用。
如果我的回答帮助到了你,欢迎采纳,祝学习愉快~
同学你好,代码中存在问题,建议按照任务提示中写:
对外提供的接口是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>
如果我的回答帮助到了你,欢迎采纳,祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星