课堂提问:为什么要在Object上使用defineProperty()封装功能?
这是我自己根据老师的思路封装的 常量声明函数;还请老师看看
var person={age:28};
defineConst(person);
person.name="jk";
person.age=44;
console.log(person);
// 上面的是检测代码
function defineConst(obj){
for(var item in obj){
if(obj.hasOwnProperty(item)){
Object.defineProperty(obj,item,{
writable:false
})
};
};
Object.seal(obj);
return;
}效果都是一样的,这两者有何区别不一样,老师为什么要在Object上定义一个函数方法,而不是直接写一个函数方法?是方便全局调用吗?
25
收起
正在回答 回答被采纳积分+1
2回答
独孤韧
2019-08-12 23:47:17
function defineConst(obj){ if(arguments.length===1){
// 如果参数只有1个,将对象的所有属性设为常量 for(var item in obj){ if(obj.hasOwnProperty(item)){
Object.defineProperty(obj,item,{
writable:false
})
};
};
}else if(arguments.length>1){
// 如果参数有2个或者以上,将传入的属性设为常量
for(var index = 1;index<arguments.length;index++){ if(obj.hasOwnProperty(arguments[index])){
Object.defineProperty(obj,arguments[index],{
writable:false
})
};
}
};
// 不阻止window对象扩展 if(obj!=window){
Object.seal(obj);
}; return;
}这是我强化更新版本
4.Vue与React高级框架开发
- 参与学习 人
- 提交作业 239 份
- 解答问题 10739 个
本阶段带你深入前端开发的肌理,通过ES6基础知识和前端主流高级框架的学习,助你快速构建企业级移动webAPP应用,进入职场的终极battle
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星