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)返回未定义。
答案 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
。
您现在可以轻松地使当前代码正常工作。但是要使用数组/对象的方式。