gpt4 book ai didi

Javascript:如何动态更改函数调用参数?

转载 作者:行者123 更新时间:2023-12-01 02:08:04 29 4
gpt4 key购买 nike

我从 jquery 的 json 调用接收一些“正文”内容,我可以通过执行以下操作获取返回的唯一 javascript 元素:

script_element = $(data.body)[1]

这等于:

<script type=​"text/​javascript">​
updater('foo', 'bar', {}, '0', constant='');
</script>​

因此,typeof script_element 返回“object”

而且,如果我运行 script_element.innerText,我可以获得:

updater('foo', 'bar', {}, '0', constant='');

收到这个脚本后,我现在所做的只是对其运行eval,但是四处搜索我找不到运行eval的方法更改函数调用参数。

我想要做的是更改调用的 third 参数,在本例中为 {},它可以根据 json 的返回进行更改调用,因此我不能只搜索 {}

例如,我也可以执行 script_element.text.split(',')[2] ,并动态更改此文本,但我认为应该有更好的方法这。

我不知道javascript是否可以识别和处理“ future 的方法调用”,但仍然认为应该有更好的方法。

有什么想法吗?

最佳答案

您可以做的是隐藏该函数,以便能够更改第三个参数。您应该在获取 JSON 之前定义该遮蔽函数。

var originalUpdater = updater; // keep old function to call

// overwrite (shadowing)
updater = function(a, b, c, d, e) {
// change c appropriately here
originalUpdater(a, b, c, d, e);
}

然后你仍然可以eval它(这不是很安全,但如果我没有记错的话,这不是你的重点),它会调用影子函数。

<小时/>

更通用的阴影方法如下:

var originalUpdater = updater; // keep old function to call

// overwrite (shadowing)
updater = function() {
// change arguments[2] appropriately here
originalUpdater.apply(this, arguments);
}
<小时/>

fiddle :http://jsfiddle.net/n7dLX/

关于Javascript:如何动态更改函数调用参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6736486/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com