关于视频中解决属性是对象的问题
Object.defineProperty(Object, 'freezePolyFill', { //给Object对象挂一个方法freePolyFill
value: function(obj) { //freezePolyFill的值是一个方法 这样写在调用的时候就可以Object.freezePolyFill(把对象传入)调用自己设置的方法
var i;
for (i in obj) {
if (obj.hasOwnProperty(i)) { //判断自身的属性,而不是继承原型上的属性
if (typeof obj[i] == 'object') {
//如果属性是对象,重新执行一次freezePolyFill方法,令到属性是对象不可被修改和扩展
Object.freezePolyFill(obj[i]);
}
Object.defineProperty(obj, i, { //修改传入的obj的属性,obj的属性是i,代表遍历的每一项obj的属性 让属性值不可改写
writable: false
})
}
}
Object.seal(obj); //使传入的obj不可被扩展
}
});
const xiaoming = {
age: 14,
name: '小明',
obj: {
a: 3
}
}
Object.freezePolyFill(xiaoming);
老师,我的注释理解是否有问题? 给Object添加一个方法freezePolyFill。这个Object指的是哪个对象? 这样应该可以实现视频中对象上的属性是对象的问题吧?
正在回答 回答被采纳积分+1
- 参与学习 人
- 提交作业 239 份
- 解答问题 10739 个
本阶段带你深入前端开发的肌理,通过ES6基础知识和前端主流高级框架的学习,助你快速构建企业级移动webAPP应用,进入职场的终极battle
了解课程


恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星