2015-01-10 4 views
0

В приведенном ниже коде я пытаюсь создать объект с именем «портфолио», внутри которого Я хочу создать другие объекты, которые содержат свойства «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 

Почему предупреждение возвращается «не определено», а не 23?

Thnaks заранее.

ответ

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]); 
  1. Не используйте for..in для массивов.
  2. this[stock[i]] = stock[i]; заменить на this[stock[i]] = {};.

Example

+0

Благодаря @Alexander – user2713706

1

Я думаю, что есть небольшая путаница между объектами и переменными.

Вы можете создать настоящий портфель классов JavaScript, который содержит коллекцию других ресурсов класса, которые содержат 2 значения переменных и цену.

В вашем классе портфеля вы можете добавить меток AddStock и GetStock.

Посмотрите на классы JavaScript, я думаю, вы найдете свое счастье.

Steeve

1

И пытаются использовать как LIBS подчеркиванием или lodash, чтобы избавиться от них для петель (каждая). Это намного лучше и функциональнее.

немного короче:

это [складе [я]] = {stockvalue: stockvalue [I], цена: [I]};

Смежные вопросы