Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Обращение к свойству объекта. (https://javascript.ru/forum/events/60610-obrashhenie-k-svojjstvu-obekta.html)

Руднев 10.01.2016 19:45

Обращение к свойству объекта.
 
Доброго времени суток всем!

Подскажите пожалуйста, как быть в данной ситуации.

Есть объект.

var defaultValues = {
    repayment: [],
    creditAmount: {
      val: $creditAmount.val()
    },
    monthPayment: {
      val: $monthPayment.val()
    },
    creditTerm: {
      val: $period.val()
    },
    creditRate: {
      val: 0.19 / defaultValues.creditTerm.val
    },
    pay: 0,
    term: 0
  };



Как в значение creditRate.val записать частное 0.19 и creditTerm.val ?

Сейчас defaultValues.creditTerm.val undefined.

Понимаю, наверно очевидный ответ, но я в ступоре. Не судите строго.

Decode 10.01.2016 20:20

Руднев,
val: 0.19 / this.creditTerm.val

Руднев 10.01.2016 20:33

Цитата:

Сообщение от Decode (Сообщение 403194)
Руднев,
val: 0.19 / this.creditTerm.val

ну это не работает. Я так пробовал.   

this в данном случае обращается к контексту объекта creditRate, а мне нужно обратиться к свойству объекта defaultValues

Keramet 10.01.2016 20:34

var defaultValues = {
    repayment: [],
    creditAmount: {
      val: $creditAmount.val()
    },
    monthPayment: {
      val: $monthPayment.val()
    },
    creditTerm: {
      val: $period.val()
    },
    creditRate: {
      val: function() {return typeof defaultValues.creditTerm.val === 'undefined' ?
                        "не определено" :  0.19 / defaultValues.creditTerm.val }
    },
    pay: 0,
    term: 0
  };

defaultValues.creditRate.val()  // получение значения

Keramet 10.01.2016 20:38

Подправил - по идее должно сработать

Руднев 10.01.2016 21:29

Цитата:

Сообщение от Keramet (Сообщение 403198)
Подправил - по идее должно сработать

Да, спасибо, работает, т.е. вариант только такой, если val делать методом ?

Проще не сделать ?

Keramet 10.01.2016 21:36

Руднев,
По идее, любую задачу можно решать несколькими методами. Я пока только такой нашёл - ведь я только начал учить JS. но, думаю, спецы сделали бы по-другому, а меня раскритиковали в "пух и прах" :) Так что будем ждать другие варианты - я сам с удовольствием гляну

Decode 11.01.2016 01:34

Цитата:

Сообщение от Руднев (Сообщение 403196)
ну это не работает. Я так пробовал.   

this в данном случае обращается к контексту объекта creditRate, а мне нужно обратиться к свойству объекта defaultValues

Да бля... Я чет не посмотрел сразу, что там вложенные объекты. Мб так:

var defaultValues = new function() {
  /*repayment = [];
  
  this.creditAmount = {
    val: $creditAmount.val()
  };
  
  this.monthPayment = {
    val: $monthPayment.val()
  };*/
  
  this.creditTerm = {
    val: 10
  };
  
  this.creditRate = {
    val: (0.19 / this.creditTerm.val)
  };
  
  this.pay = 0;
  
  this.term = 0;
};

alert(defaultValues.creditRate.val);

Руднев 11.01.2016 02:25

Цитата:

Сообщение от Decode (Сообщение 403234)
Да бля... Я чет не посмотрел сразу, что там вложенные объекты. Мб так:

var defaultValues = new function() {
  /*repayment = [];
  
  this.creditAmount = {
    val: $creditAmount.val()
  };
  
  this.monthPayment = {
    val: $monthPayment.val()
  };*/
  
  this.creditTerm = {
    val: 10
  };
  
  this.creditRate = {
    val: (0.19 / this.creditTerm.val)
  };
  
  this.pay = 0;
  
  this.term = 0;
};

alert(defaultValues.creditRate.val);

Класс, спасибо! Поясните пожалуйста, если вас не затруднит, в двух словах, к чему вы преобразовали? И почему у меня не работало ? Спасибо еще раз большое! Я просто только начинаю познавать, и хотелось бы понять нюансы.

yazonnile 11.01.2016 02:34

Тут более чем подробно описано.
https://learn.javascript.ru/object-methods


Часовой пояс GMT +3, время: 18:33.