2014-11-11 2 views
1

Возможно ли вообще запустить уравнение внутри объекта? Примером того, что я хотел бы достичь, является:Запуск уравнения в объекте javascript

var taxes = { 
    gst: '0.10', 
}; 

var prices = { 
    first_key: '437.95', 
    total_key: parseFloat(prices.first_key * taxes.gst).toFixed(2), 
    ....... 
    }, 
}; 

Или мне нужно запустить его как функцию?

var prices = { 
    total_key: function() { return parseFloat(prices.first_key * taxes.gst).toFixed(2);} 
} 

Если вообще, возможно ли это сделать в качестве первого варианта?

Cheers.

+2

Почему вы не проверили это? – Mik378

+2

Выражение в первом примере будет выполнено, если вы выполняете задание 'var prices', а не каждый раз, когда вы обращаетесь к элементу. – Barmar

+1

Нет смысла вызывать 'parseFloat()' в результате умножения. Вы должны вызывать 'parseFloat' в строках, которые находятся в свойствах _before_, умножая их. – Barmar

ответ

2

Использование javascript объекта getters.

var prices = { 
    first_key: '437.95', 
    get total_key(){return parseFloat(this.first_key * taxes.gst).toFixed(2)}, 
    ....... 
    }, 
}; 

затем доступ к значению,

prices.total_key 
1

Вы можете настроить getter function, которая в значительной степени является функцией, но ведет себя как свойство. Это может выглядеть как

var prices = { 
    first_key: '437.95', 
    get total_key() { 
     return (parseFloat(this.first_key) * parseFloat(taxes.gst)).toFixed(2); 
    } 
}; 

Теперь вы можете получить доступ к

prices.total_key; 

и вы получите результат.

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