是否可以在另一个范围内使用创建的对象?
var iZ = 0;
var pcs = {};
function Pc(_name, _os) //Constructor
{
this.name = _name; // Pc Name
this.os = _os; //Pc Os
this.ausgabe = function()
{
//Do something
}; iZ++;
}
//Creating a new object
document.getElementById("pc_create").addEventListener("click", function()
{
pcs['pc' + iZ] = new Pc('Pc '+ iZ , os);
pcs['pc' + iZ].ausgabe();
});
//Using object in another scope
document.getElementById("run").addEventListener("click", function()
{
pcs['pc' + iZ].name = "test"; // Doesnt work
});
有没有其他方法可以解决这个问题?
答案 0 :(得分:4)
使用,
this.name = _name;
而不是,
var name = _name;
如果您没有将name
分配给当前对象,那么该{@ 1}}将成为该构造函数的local variable
。这也适用于os
。
另外一个主要错误是,无论何时创建instance
,您都要通过递增variable
来更新一个count
。因此,如果您创建了2个实例,那么您的2个对象将分别存储为'pc0'
和'pc1'
。但计数iZ
将为2
。现在,如果您当时访问'pc2'
,则不会获取它,因为它未被创建。所以你可以通过重写代码来修复它,如下所示,
pcs['pc' + (iZ-1)].name = "test";
答案 1 :(得分:0)
现在可以使用:
document.getElementById("run").addEventListener("click", function()
{
pcs['pc' + iZ].name = "test"; // Now work
});