我想要构造函数中的构造函数 - 我已经搜索了 stackoverflow 并广泛搜索了......
我有一个构造函数RentalProperty
:
function RentalProperty(numberOfUnits, address, dateAcquired, acCost, isFinanced,
loanAmount){
this.numberOfUnits = numberOfUnits;
this.address = address;
this.dateAcquired = new Date(dateAcquired);
this.acCost = acCost;
this.isFinanced = isFinanced;
this.loanAmount = 0;
this.newValue = 0;
this.equity = function(){
if (this.newValue === 0){
return (this.acCost - this.loanAmount);
} else {
return (this.newValue - this.loanAmount);
}
};
}
RentalProperty
的每个实例都会有一系列 unit
对象,我希望它们是 unit1
、unit2
>、unit3
等。但是,RentalProperty
的某些实例只有一个 unit
,而其他实例可能有 6 个、12 个或更多。我在这里执行的方式似乎不正确,因为有很多重复的代码,并且我需要创建大量可能不用于特定实例的 unit
对象RentalProperty
:
RentalProperty.prototype.unit1 = {
unitNumber : "1",
monthlyRent: 0,
leaseStart: new Date(0),
leaseEnd: new Date(0),
numBeds: 0,
isSec8: false,
tenantPortion: 0,
sec8Portion: 0
};
RentalProperty.prototype.unit2 = {
unitNumber : "2",
monthlyRent: 0,
leaseStart: new Date(0),
leaseEnd: new Date(0),
numBeds: 0,
isSec8: false,
tenantPortion: 0,
sec8Portion: 0
};
RentalProperty.prototype.unit3 = {
unitNumber : "3",
monthlyRent: 0,
leaseStart: new Date(0),
leaseEnd: new Date(0),
numBeds: 0,
isSec8: false,
tenantPortion: 0,
sec8Portion: 0
};
我尝试了各种语法组合(我已经抓狂了几个小时),将 unit
构造函数放入 RentalProperty
构造函数中,代码如下:
....
this.unit["for(i=0, i < this.numberOfUnits, i++){return i;}"] = {
unitNumber : "i",
monthlyRent: 0,
leaseStart: new Date(0),
leaseEnd: new Date(0),
numBeds: 0,
isSec8: false,
tenantPortion: 0,
sec8Portion: 0
};
....希望使用 RentalProperty
的 this.numOfUnits
属性的值创建正确数量的单位
,但是它给了我“缺少操作数”。
我也尝试过:
....//'new Object' added
this.unit[for(i=0, i < this.numberOfUnits, i++){return i;}] = new Object{
unitNumber : "i",
monthlyRent: 0,
leaseStart: new Date(0),
leaseEnd: new Date(0),
numBeds: 0,
isSec8: false,
tenantPortion: 0,
sec8Portion: 0
};
....
....//trying to make another constructor
function Units(){
unitNumber = "1";
monthlyRent = 0;
leaseStart = new Date(0);
leaseEnd = new Date(0);
numBeds = 0;
isSec8 = false;
tenantPortion = 0;
sec8Portion = 0;
}
var yale = new RentalProperty()
var yale.unit33 = new Units();
....但是当我尝试使用前面的 RentalProperty
实例以点表示法创建新的 Units
类的实例时,它会显示“意外 token ”。
我只学习了 2 个月的编码(html 和 javascript 各大约一个月),所以我很确定这是一个菜鸟问题。任何帮助将不胜感激......这也是我的第一个 stackoverflow 问题,所以如果我的格式关闭,请接受我的道歉。
最佳答案
看来你想要
this.units = []; // an array which
for (var i=0; i < this.numberOfUnits; i++) { // in a loop
this.units[i] = { // is filled with objects
unitNumber : i,
monthlyRent: 0,
leaseStart: new Date(0),
leaseEnd: new Date(0),
numBeds: 0,
isSec8: false,
tenantPortion: 0,
sec8Portion: 0
};
}
当然,除了对象文字,您还可以使用new Units(i)
或其他东西来创建单元对象。
如果你不想要一个数组,但在你的对象上创建编号属性(我不鼓励这样做),那就是
this["unit"+i] = …
关于javascript - javascript 中构造函数中的构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18473777/