gpt4 book ai didi

javascript - JavaScript 中的动态实例化

转载 作者:可可西里 更新时间:2023-11-01 01:59:00 25 4
gpt4 key购买 nike

除了 eval(`o = new ${className}(${args.join(", ")})`) 之外,还有其他方法可以使用可变参数实例化对象吗名单?

例如:var foo = instantiate(className, [arg1, arg2, ...])

最佳答案

您可以像这样用可变参数列表实例化一个对象:

function instantiate(className, args) {
var o, f, c;
c = window[className]; // get reference to class constructor function
f = function(){}; // dummy function
f.prototype = c.prototype; // reference same prototype
o = new f(); // instantiate dummy function to copy prototype properties
c.apply(o, args); // call class constructor, supplying new object as context
o.constructor = c; // assign correct constructor (not f)
return o;
}

旁注:您可能希望传递对类构造函数的直接引用:

var foo = instantiate(Array, [arg1, arg2, ...]);
// Instead of:
var foo = instantiate("Array", [arg1, arg2, ...]);

... 这使得它与非全局函数兼容。

关于javascript - JavaScript 中的动态实例化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5029329/

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