使用构造函数在对象内部创建对象

Creating Objects inside objects using a Constructor

在下面的代码中,我试图创建一个名为 "portfolio" 的对象,其中 我想创建其他包含属性 "stockvalue" 和 "price"?

的对象
var portfolio_create = function(stock,stockvalue,price)
{
    for(i in stock)
    {
        this[stock[i]] = stock[i];
        this[stock[i]]["stockvalue"] =stockvalue[i];
        this[stock[i]]["price"]=price[i]    
    }
}

var portfolio = new portfolio_create(["ibm","tcs"],[23,34],[34,45]);

var stock_market = portfolio;


alert(portfolio["ibm"]["stockvalue"]);  // undefined

为什么警报 return "undefined" 而不是 23?

提前致谢。

var portfolio_create = function (stock, stockvalue, price) {

    for (var i = 0, len = stock.length; i < len; i++) {
        this[stock[i]] = {};

        this[stock[i]]["stockvalue"] = stockvalue[i];
        this[stock[i]]["price"]      = price[i];    
    }
}
var portfolio = new portfolio_create(["ibm", "tcs"], [23,34], [34,45]);
  1. 不要对数组使用 for..in
  2. this[stock[i]] = stock[i]; 替换为 this[stock[i]] = {};.

Example

我认为对象和变量之间有点混淆。

您可以创建一个真实的 JavaScript class 投资组合,其中包含另一只 class 股票的集合,其中包含 2 个变量值和价格。

在您的投资组合 class 中,您可以添加一个 AddStock 方法和一个 GetStock。

看看JavaScript类,我想你会找到你的幸福。

史蒂夫

并尝试使用下划线或 lodash 等库来摆脱这些 for 循环(每个)。它更好,更实用。

短一点:

this[stock[i]] = { stockvalue: stockvalue[i], price: price[i] };