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

时间:2018-06-24 03:30:10

标签: javascript jquery constructor

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)相关的标题。我尝试了以下方法:

  var index = 4,
  x = "projectTitle" + index,
  y = projectTitle.mainTitle;

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

2 个答案:

答案 0 :(得分:2)

运行后,您将无法“访问构造函数”。但是,您可以要做的是将每个实例都放入一个数组中,并访问适当的索引:

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中的数字索引。

答案 1 :(得分:0)

只需使用数组或对象。

@Tested

然后从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")); 0开始按索引访问每个元素。

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

titles[index]

然后,您可以以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]

您有var index = 4, x = "projectTitle" + index ,其中x为值。

projectTitle4

y = projectTitle.mainTitle; 未定义,您甚至从未使用过projectTitle

将变量名作为字符串使用,如果它在全局范围内(在函数外部)运行,则可以以x的形式访问变量projectTitle4

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