使用构造函数在对象内创建对象
Creating Objects inside objects using a Constructor
在下面的代码中,我试图创建一个名为"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]);
- 不要将
for..in
用于数组。 -
this[stock[i]] = stock[i];
替换为this[stock[i]] = {};.
例
我认为在对象和变量之间有一点混淆。
您可以创建一个真实的 JavaScript 类投资组合,其中包含另一个类股票的集合,其中包含 2 个变量值和价格。
在项目组合类中,您可以添加 AddStock 方法和 GetStock。
看看 JavaScript 类,我想你会发现你的幸福。
史蒂夫
并尝试使用像下划线或 lodash 这样的库来摆脱这些循环(每个)。它更好,功能更强大。
短一点:
这[股票[i]] = { 股票价值: 股票价值[i], 价格: 价格[i] };
相关文章:
- JQuery对动态创建的对象进行选择
- 在使用object.create创建的对象中使用super
- 查找关键字并创建新对象
- 创建新对象时,为什么要更新旧对象
- 什么是“;原型;通过JavaScript中的Object Literal Notation创建的对象的链接
- 为什么要使用立即调用的函数来创建新对象
- Javascript:对回调创建的对象执行方法
- 我怎样才能让jQuery即使在尚未创建的对象上也能工作
- .on(“单击”,..)不处理使用相同的单击功能创建的对象
- 正在使用object.create()创建XMLHttpRequest对象
- 使用推动创建动态对象
- 从数组javascript创建新对象
- 是否可以在不创建svg对象的情况下创建捕捉元素?[snap.svg]
- 在for循环-Javascript中创建新对象
- 确定是创建新对象还是更新现有对象
- 如何从带有多个对象的JSON字符串创建JSON对象
- Mongoose模式:强制创建一个对象数组
- 无法创建MozillaBrowserBot对象
- 是否可以创建一个对象,该对象是另一个对象的子集,而不会丢失javascript中的引用
- 创建jQuery对象时出现问题