我正在尝试在js中运行此代码
function platform() {
platform.list.push(this);
//some more code
}
platform.lf = false;
,并且我已将所有平台实例存储在platform.list中。但是当我尝试这样做时:
console.log(platform.list[0].lf);
我不确定吗?有什么帮助吗? (我确实有一个平台对象实例)
答案 0 :(得分:0)
这是您要尝试做的吗?在代码段上看起来如何正常运行?您是否忘记在您的“ //更多代码”部分中初始化了lf(this.lf = ...),您没有将其发布?
附带说明-platfrom.lf和您要访问的属于类实例的lf完全不同。
test.list = []
function test()
{
test.list.push(this);
this.x = Math.random();
}
a = new test();
b = new test();
console.log(test.list.length);
console.log(test.list[0].x);
console.log(test.list[1].x);
答案 1 :(得分:0)
这可能是您需要学习的内容。如果要创建构造函数(由于私有变量的原因,我现在推荐使用它而不是类),它不是对象,直到您对其调用new
。
function Platform(){
const a = ['lame', 1, 'test']; // private array
this.lf = true;
this.testFunc = ()=>{
// no arguments array in an arrow function
console.log(a);
return this; // for property chaining
}
}
function Platforms(){
this.list = [];
this.addPlatform = function(){
this.list.push(...arguments);
return this;
}
}
const pf = new Platforms, np = new Platform;
np.lf = false;
pf.addPlatform(new Platform, new Platform, np);
pf.list[0].lf = false;
console.log(pf.list); np.testFunc();
您可能还会喜欢这种设计:
function Platform(){
this.lf = true;
}
function Platforms(){
this.list = [];
this.addPlatform = function(){
this.list.push(new Platform);
return this;
}
}
const pf = new Platforms;
pf.addPlatform().addPlatform().addPlatform();
pf.list[0].lf = false;
console.log(pf.list);