[Javascript] Access private variable inside IIFE and mutate this through Object.prototype getter function
For this code, try to not modify the code itself but mutate obj
var o = (function () {
var obj = {
a: 1,
b: 2,
};
return {
get: function (k) {
return obj[k];
},
};
})();
Answer:
Our target is when we calling o.get()
, we want to get the reference of obj
, once we got the reference then we can mutate the value whatever we want.
Since we know that Object
has prototype chain, for example, we can do following:
Object.defineProperty(Object.prototype, "abc", {
get() {
return this;
},
});
now if we invoke o.get("abc")
, then it will invoke the prototype Object.prototype.abc
which is a get function and return the caller this
Now we are able to mutate the obj
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2023-08-23 [React Typescript] ElementType, ComponentType
2023-08-23 [React Typescript] JSX.IntrinsicElements
2022-08-23 [Unit testing Express] Testing controller
2022-08-23 [Express] Extends CrudController with Mongoose model
2022-08-23 [Unit Testing] Test Mongoose model
2020-08-23 [React] Use react styled system with styled components
2019-08-23 [Cypress] install, configure, and script Cypress for JavaScript web applications -- part4