You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过存储构造函数名的字符串变量创建实例并访问原型方法

你之前的写法错误原因:Object.create()要求入参为对象作为新实例的原型,你传入的是字符串类型的构造函数名,自然无法正常运行。

以下是两种常用的可行方案:

方案1:使用全局对象获取构造函数(仅适用于全局声明的构造函数)

如果你的构造函数是用var声明在全局作用域,或者直接挂载到全局对象上,可以直接通过全局对象的下标访问到构造函数:

// 浏览器环境
const objFlipkart = new window[myVariable]();
// Node.js环境
const objFlipkart = new global[myVariable]();

objFlipkart.someFunction('someValue'); // 输出 someValue

注意:如果构造函数是用let/const在全局作用域声明的,不会被挂载到全局对象上,这个方案不生效

方案2:使用构造函数映射表(更推荐,无作用域限制、更安全)

提前把你所有的构造函数存在一个统一的映射对象中,通过变量值取到对应的构造函数即可:

// 提前定义构造函数映射表
const constructorMap = {
  flipkart: flipkart,
  // 其他构造函数也可以都放这里
  // amazon: amazon,
  // shopify: shopify
};

// 创建实例
const objFlipkart = new constructorMap[myVariable]();
objFlipkart.someFunction('someValue'); // 输出 someValue

如果是要访问已经创建好的实例,同理提前维护实例映射表即可:

// 提前创建好实例存在映射表中
const instanceMap = {
  flipkart: new flipkart()
  // 其他已创建的实例
};

// 直接访问
const objFlipkart = instanceMap[myVariable];
objFlipkart.someFunction('someValue'); // 输出 someValue

内容的提问来源于stack exchange,提问作者Greatest

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 16:27:03