javascript - 如何更改出现在 toString() 中的 Javascript 函数名称?
问题描述
Function.name
属性是可配置的,可以被覆盖,但如果我尝试
function foo() {}
Object.defineProperty(foo, 'name', {value: 'bar'})
foo.toString()
仍然显示为,"function foo() {}"
但我希望它是"function bar() {}"
。
解决方案
你不能 100% 可靠地做到这一点。这是因为 的定义Function.prototype.toString
,它使用 [[SourceText]] 内部插槽,该插槽设置为从用于创建函数的源代码创建函数。它不使用该name
属性。
您也可以尝试覆盖toString
该函数,但当然,如果有人明确使用它,那仍然会失败Function.prototype.toString
。
推荐阅读
- python - How to implement the segment function in GEKKO?
- flutter - The argument type 'Object' can't be assigned to the parameter type 'String'
- javascript - 尝试在 Javascript (Twine) 中创建一个简单的基于关键字的搜索栏
- oracle - 混合和匹配数据类型以生成所需的日期格式 mm/dd/yyyy
- netlogo - 如何改变特定区域总数中 n 只海龟的颜色?
- javascript - 选择时,v-calendar 不会突出显示道具内的日期
- html - 对 h1 标题的更改会影响整个页面,但会更改目标元素
- java - Vaadin addSucceededListener
- async-await - NextJs - 节点 - API 已解析,但未发送 /api/xxx 响应
- azure - 将数据从 SnowFlake 卸载到 ADLS