在下面的代码中,我试图创建一个名为" portfolio"的对象。里面哪个 我想创建其他包含属性的对象" stockvalue"和"价格"?
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?
提前做好准备。答案 0 :(得分:1)
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]);
for..in
用于数组。 this[stock[i]] = stock[i];
替换为this[stock[i]] = {};.
答案 1 :(得分:1)
我认为对象和变量之间存在一些混淆。
您可以创建一个真正的JavaScript类组合,其中包含另一个类库的集合,其中包含2个变量值和价格。
在您的投资组合类中,您可以添加AddStock方法和GetStock。
看看JavaScript类,我想你会找到你的幸福。
吊杆
答案 2 :(得分:1)
尝试使用像下划线或lodash这样的lib来摆脱这些for循环(每个)。它更好,更实用。
稍微短一些:
这[stock [i]] = {stockvalue:stockvalue [i],price:price [i]};