封装的这个freezePolyfill用递归要怎么做?
封装的这个freezePolyfill用递归要怎么做?写不来,老师指导下
自己改了下,但感觉只对对象有效,遇到数组和函数应该就没用了
Object.defineProperty(Object, 'freezePolyfill', {
value: function (obj) {
var i;
for (i in obj) {
if (obj.hasOwnProperty(i)) {
if (typeof obj[i] === 'object') {
Object.freezePolyfill(obj[i]);
} else {
Object.defineProperty(obj, i, {
writable: false
});
}
}
}
Object.seal(obj);
}
});
正在回答
同学你好,对于你的问题解答如下:
同学粘贴的这段代码,使用的就是递归实现的效果呀,如下图所示:当判断属性的类型是对象时,就再次调用封装的freezePolyfill方法
老师测试同学的代码,效果实现是对的,对象下的数组和对象中的属性都不可以被修改,示例:
修改之前和之后输出的对象o的结果是一样的,无法修改他的值。
祝学习愉快~
- 参与学习 人
- 提交作业 209 份
- 解答问题 3299 个
本路径是通过ES6基础知识、运用Zepto、Swiper、fullPag等移动端常用工具包、以及当下流行框架Vue,结合多个实战案例,还原真实开发场景,最终实现手机端购物商城网页开发。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星