为了账号安全,请及时绑定邮箱和手机立即绑定

前端面试题,利用给定接口获得闭包内部对象

前端面试题,利用给定接口获得闭包内部对象

动漫人物 2019-04-21 20:41:15
varo=(function(){varperson={name:'Vincent',age:24,};return{run:function(k){returnperson[k];},}}());在不改变上面的代码情况下,怎么得到原有的person对象?假如在person中加上__proto__:null,原先大家回答的方法就失效了,但此时仍旧有​​解,有兴趣者欢迎挑战。
查看完整描述

2 回答

?
白板的微信

TA贡献1883条经验 获得超3个赞

Object.prototype.__defineGetter__('get',function(){
returnthis;
});
console.log(o.run('get'));
                            
查看完整回答
反对 回复 2019-04-21
?
胡子哥哥

TA贡献1825条经验 获得超6个赞

基于@小俞的方法,我写个可能是更好的选择的吧!
javascriptObject.defineProperty(Object.prototype,'self',{
get:function(){returnthis;},
set:function(value){returnthis},
configurable:true
//该属性的存在是确保该属性可被delete方法删除
});
varperson=o.run('self');
deleteObject.prototype.self;
//由于不推荐使用prototype来扩展自己定义的属性(扩展标准规定的除外),这里把扩展再去掉。
相较小俞的做法,这里面的用到的都是共有方法,不是__xxx__这种更为私有的方法(__xxx__)这种可能在不同浏览器里的实现不一样。
                            
查看完整回答
反对 回复 2019-04-21
  • 2 回答
  • 0 关注
  • 339 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信