javascript - javascript 中构造函数中的构造函数?

标签 javascript object constructor

我想要构造函数中的构造函数 - 我已经搜索了 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 对象,我希望它们是 unit1unit2 >、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
    };

....希望使用 RentalPropertythis.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/

相关文章:

javascript - jquery 滚动条没有出现在 Firefox 中

javascript - 如何在 Jquery POST 中获取 HTTP 错误响应代码

c++ - 为什么不能在构造函数中捕获异常?

带或不带 new 运算符的 JavaScript 构造函数

javascript - 在 map 中 react JS : How to add a Key to an array that hasn't been initiated,?

javascript - Express.js 路由处理程序执行顺序

jquery方式的Javascript继承

javascript - 在js中将对象推送到数组

python - 对象在 Python 2.7.6 中被视为 NoneType

java - 同一类中的两个构造函数具有不同的参数