gpt4 book ai didi

Javascript 更改函数参数

转载 作者:行者123 更新时间:2023-11-30 10:45:59 26 4
gpt4 key购买 nike

我正在尝试更改 javascript 中的函数参数。

f = function(){
console.log(a,b,c);
};

SetArgumentList( f, ["a", "b", "c"] );

f(1,2,3);
// should print "1 2 3"

// [edit]
// alternatively SetArgumentList could also work like
f = SetArgumentList( f, ["a", "b", "c"] );

有什么可靠的方法可以做到这一点吗?


我在哪里需要它?...基本上我正在尝试添加类型检查函数:

Object.prototype.method = function( name, typedef, func ){ ... }

function Thing(){};

Thing.method("log",
{ arr: Array, str: String },
function(){
console.log(arr, str);
});

t = new Thing();
t.log([1,2,3], "ok");
t.log("err", "ok"); // <-- causes an exception

// I know I can do this way
Thing.method("log",
[Array, String],
function(arr, str){
console.log(arr, str);
});
// but that's harder to read

注意!我知道如何进行类型检查,但不知道如何构造新函数。

最佳答案

正如 delnan 在评论中所说,您尝试做的事情似乎本质上是“重命名”函数的局部变量。就像他说的,这是不可能的(也是有充分理由的!你能想象调试那个吗?maaan...)

无论如何,我不确切地知道您为什么想要它,但是 Javascript 是一种灵活的语言,您可能可以使用更明智的方法来接近它。很难确切地知道您想要实现什么,但也许这些信息可以让您走上正确的轨道:

  • 调用 时传递给函数的参数在名为arguments 的变量中引用。

    function f() {
    console.log(arguments);
    }
    f(); // []
    f(1, 2); // [1, 2]
  • 您可以使用 .apply 调用带有任意参数列表的函数,这是 Function 原型(prototype)上的一个方法。它需要2个参数。第一个是函数调用中的 this 对象,第二个是参数数组。

    f.apply(null, []); // []
    f.apply(null, [1, 2, 3]); [1, 2, 3]

将此应用于您的情况,也许这就是您所追求的:

function f() {
console.log.apply(console, arguments);
}

关于Javascript 更改函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8278677/

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