首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >劫持作用域链引用var

劫持作用域链引用var
EN

Stack Overflow用户
提问于 2017-02-24 02:19:49
回答 2查看 40关注 0票数 2

如何在作用域链中覆盖/劫持引用?

如果我在另一个文件(node Env)中有一个函数:

代码语言:javascript
复制
const name = 'name_local'
export default () => { return name }

我想从另一个文件中导入该函数,但要覆盖它对name的引用,并传递一个新的引用:

代码语言:javascript
复制
import nameFunc from '../otherFile'
const name = 'hijacked name reference'
nameFunc() // 'hijacked name reference'
EN

回答 2

Stack Overflow用户

发布于 2017-02-24 02:22:22

你不能,语言并没有为你提供这样做的机制。

这句话看起来微不足道,但事实就是这样:语言不允许你这样做。在规范方面,尽管函数可以访问其封闭的词法环境记录,该记录具有name的绑定,但该引用(实际上,一般的词法环境记录)不会向脚本代码公开(甚至不允许在实现中直接存在;它们是一种规范机制)。所以没有办法从函数中获取信息,所以也没有办法改变它。

票数 2
EN

Stack Overflow用户

发布于 2017-02-24 02:31:43

只需这样做:

代码语言:javascript
复制
const name = 'name_local';
export default (input = name) => { return input }

其他文件:

代码语言:javascript
复制
import nameFunc from '../otherFile'
const name = 'name_other';
nameFunc(name)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42423334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档