首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用变量访问构造函数并获得预期的字符串

使用变量访问构造函数并获得预期的字符串
EN

Stack Overflow用户
提问于 2018-06-24 03:30:09
回答 2查看 28关注 0票数 0
代码语言:javascript
复制
function Title(mainTitle){
  this.mainTitle = mainTitle;
}

var projectTitle1 = new Title("Project-1 Main Title"),
projectTitle2 = new Title("Project-2 Main Title"),
projectTitle3 = new Title("Project-3 Main Title"),
projectTitle4 = new Title("Project-4 Main Title");

我喜欢访问构造函数并提取与给定索引(1-4)相关的标题。我尝试了以下几点:

代码语言:javascript
复制
  var index = 4,
  x = "projectTitle" + index,
  y = projectTitle.mainTitle;

console.log(y)返回未定义的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-24 03:34:04

在运行构造函数后,不能“访问构造函数”。但是,您可以做的是将每个实例化放在一个数组中,并访问适当的索引:

代码语言:javascript
复制
function Title(mainTitle){
  this.mainTitle = mainTitle;
}
const titles = [
  new Title("Project-1 Main Title"),
  new Title("Project-2 Main Title"),
  new Title("Project-3 Main Title"),
  new Title("Project-4 Main Title"),
];
const getTitle = titleNum => titles[titleNum - 1].mainTitle;
console.log(getTitle(4));
console.log(getTitle(2));

当然,您必须按照顺序向titles添加项。如果不能依赖这一点,另一种可能是将每个title放入一个按其mainTitle中的数字索引的对象中。

票数 2
EN

Stack Overflow用户

发布于 2018-06-24 03:44:24

只需使用数组或对象。

代码语言:javascript
复制
var titles=[
    //add elements here
    new Title("Project-1 Main Title"),
    new Title("Project-2 Main Title")
];
//add a new element after
titles.push(new Title("Project-3 Main Title"));

然后通过索引访问每个元素,从0titles[index]开始。

或者您可以使用对象为每个元素拥有一个键(属性名)。

代码语言:javascript
复制
var titles={
    //define elements (properties) here
    "projectTitle1":new Title("Project-1 Main Title")
    "projectTitle2":new Title("Project-2 Main Title")
};
//assign a new element
titles.projectTitle3=new Title("Project-3 Main Title");

然后,您可以以titles.projectTitle1的形式访问每个元素,也可以以titles[x]的形式从字符串访问每个元素。

但是你应该知道为什么你的代码不能工作。

代码语言:javascript
复制
var index = 4,
   x = "projectTitle" + index

您有以x为值的projectTitle4

代码语言:javascript
复制
y = projectTitle.mainTitle;

projectTitle没有定义,您甚至从未使用过x

如果变量名为string,如果在全局范围(函数外)中运行,您可以以window[x]的形式访问变量window[x]

现在,您可以轻松地使当前的代码工作。但是使用数组/对象的方式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51006723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档