используйте переменную для доступа к конструктору и получения предполагаемой строки - PullRequest
0 голосов
/ 24 июня 2018
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 голосов
/ 24 июня 2018

Просто используйте массив или объект.

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 как window[x].

Вы можете легко заставить ваш текущий код работать сейчас. Но используйте массив / объект способом.

0 голосов
/ 24 июня 2018

Вы не можете "получить доступ к конструктору" после его запуска.Однако может сделать то, что вы поместили каждый экземпляр в массив и получили доступ к соответствующему индексу:

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...