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

Creating Objects inside objects using a Constructor

本文关键字:创建对象 对象 构造函数      更新时间:2023-09-26

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

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

为什么警报返回"未定义"而不是 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]] = {};.

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

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

在项目组合类中,您可以添加 AddStock 方法和 GetStock。

看看 JavaScript 类,我想你会发现你的幸福。

史蒂夫

并尝试使用像下划线或 lodash 这样的库来摆脱这些循环(每个)。它更好,功能更强大。

短一点:

这[股票[i]] = { 股票价值: 股票价值[i], 价格: 价格[i] };