课堂提问:为什么要在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 星