Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.01.2014, 02:18
Профессор
Отправить личное сообщение для hoax Посмотреть профиль Найти все сообщения от hoax
 
Регистрация: 20.09.2012
Сообщений: 151

Как циклом сложить значения свойств объекта?
В учебнике есть пример с использованием this.a+this.b

Но что если свойств десятки?

var o = {a:1, b:34, c:352} //итд.

function s(obj) {

for(key in obj) {
 obj[key]+? //..... kak tut?
 }


}

s(o)
Ответить с цитированием
  #2 (permalink)  
Старый 06.01.2014, 02:40
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

var o = {a:1, b:34, c:352} //итд.

function s(obj) {
var rez = 0;
for(key in obj) {
 rez += obj[key];
 }
return rez;
}

alert(s(o));
Ответить с цитированием
  #3 (permalink)  
Старый 06.01.2014, 23:48
Профессор
Отправить личное сообщение для hoax Посмотреть профиль Найти все сообщения от hoax
 
Регистрация: 20.09.2012
Сообщений: 151

спасибо, а вот еще вопросик, надо чтобы при вызове ф-и f(); ее параметр записывался в массив, вот только при каждом вызове, он его перезаписывает, а не добавляет :

function f(x) {
       var mass = [];
        mass.push(x);
        
       alert(mass[0]) // сначало 1, а потом 2 (и все на индексе [0])
        
      }

f(1);
      f(2);

Последний раз редактировалось hoax, 06.01.2014 в 23:50.
Ответить с цитированием
  #4 (permalink)  
Старый 06.01.2014, 23:55
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

вам нужно использовать замыкания, вот пример простого счетчика
http://learn.javascript.ru/closures-usage
Ответить с цитированием
  #5 (permalink)  
Старый 09.01.2014, 00:41
Профессор
Отправить личное сообщение для hoax Посмотреть профиль Найти все сообщения от hoax
 
Регистрация: 20.09.2012
Сообщений: 151

Спасибо, с данный материалом все ясно, получилось сделать следующее

function mass() {

  
  
  var m = [];
   return function(arg) {
     
     m.push(arg) 
     return m; 
   
    
  }
}

 var mas = mass();
      mas(122);
      mas(323)
      alert(mas()) // оба аргумента в массиве[/HTML]


Но как быть если ф-ю с этими аргументами передаются из другой ф-и? :
function mass() { // должна учитывать переданные аргументы

  
  
 var m = [];
   return function(arg) {
     
     m.push(arg) 
     return m;
   
    
  }
}

      var copy;
      function argument(arg) {
       
  // возможно какие-то манипуляции с arg
      
     copy =  mass();
        copy(arg)
        
      }
      argument(1);
       argument(23);
      
      alert(copy()) // в массиве только 23 :(((

Последний раз редактировалось hoax, 09.01.2014 в 00:46.
Ответить с цитированием
  #6 (permalink)  
Старый 09.01.2014, 01:16
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,081

hoax,
может вам 20 строку перенести на 15 ?
Ответить с цитированием
  #7 (permalink)  
Старый 09.01.2014, 01:16
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Сообщение от hoax
вот только при каждом вызове, он его перезаписывает
Так выньте массив из внутренних органов ф-ии и будет вам счастье без всяких замыканий.

Иначе либо рисуйте объект, либо юзайте функцию как объект, поскольку она и так объект.

На нормальном языке программирования ваше желания выражается статической переменной, которую можно в js изобразить как вот тут советуют http://stackoverflow.com/questions/1...-in-javascript

Последний раз редактировалось kostyanet, 09.01.2014 в 01:21.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Доступ к значениям свойств объекта в цикле Bandicoot Общие вопросы Javascript 4 04.02.2016 11:44
динамическое обновление свойств объекта в цикле grego Общие вопросы Javascript 3 04.12.2013 23:29
Как записать изменение значения? Alemikh jQuery 1 13.11.2012 18:23
Как переименовать свойство объекта? Маэстро Events/DOM/Window 28 25.10.2012 17:02
Не работает перебор свойств объекта BANick Общие вопросы Javascript 1 16.09.2008 22:46