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

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

白板的微信

Object.prototype.__defineGetter__('get',function(){returnthis;});console.log(o.run('get'));

胡子哥哥

基于@小俞的方法,我写个可能是更好的选择的吧!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__)这种可能在不同浏览器里的实现不一样。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript