Preciso de ajuda, suponhamos que eu tenho um objeto VendaAnterio
r e nesse objeto eu tenho um atributo quantidade
e outro preço
e tenho que multiplicar os dois para ter o ValorTotalVendido
.
Minha dúvida é: Tenho que criar uma função fora do objeto para fazer esse calculo? Ou tem outra forma?
1 curtida
Você pode criar uma função que devolva o valor deste cálculo, na classe, aí, usa invocando ela como uma função do objeto.
1 curtida
Darlan, eu tentei fazer dessa forma. Crie uma função que recebe como parâmetros os dois atributos, porém não esta rolando.
1 curtida
Se são atributos da classe, você não precisa passar os mesmos como parâmetros. No objeto existente, basta referenciar os mesmos, não é?
1 curtida
Sim, Mas como vou relacionar os mesmo com a função?
1 curtida
Veja o que eu fiz:
const vendaAnterior = {
preco: 10.00,
quantidade: 100
}
function totalVenda(preco, quantidade) {
return console.log(preco * quantidade)
}
1 curtida
return this.preco * this.quantidade;
Obviamente, isso só funcionará se você entender todos os detalhes a respeito do this, explicados aqui .
Principalmente este trecho
“this” refers to new instance
When a function is invoked with “new” keyword then the function is known as constructor function and returns a new instance. In such cases, the value of “this” refers to newly created instance.
console.log não retorna void?
Hmmm, pensei que seu Objeto fosse uma função (function
), por conta do título, assim:
function VendaAnterior() {
this.preco = 10.00;
this.quantidade = 100;
}
Com isso, basta criar uma função interna para retornar o cálculo.
1 curtida
Dragoon
Fevereiro 13, 2019, 12:07pm
#10
Respondendo rapidamente, não seria isso:
const vendaAnterior = {
preco: 10.00,
quantidade: 100
}
function totalVenda(venda) {
console.log(venda.preco * venda.quantidade);
}
totalVenda(vendaAnterior);
Como jah houveram várias respostas satisfatórias, seguem duas formas de fazer (tradicional e com os novos recursos do ecma6), só para complementar:
<script>
class VendaAnteriorEcma6 {
constructor(preco = 0.0, quantidade = 0) {
this.preco = preco;
this.quantidade = quantidade;
}
totalVenda() {
return this.preco * this.quantidade;
}
}
function VendaAnterior(preco = 0.0, quantidade = 0) {
var _preco = preco;
var _quantidade = quantidade;
function totalVenda() {
return _preco * _quantidade;
}
return {
totalVenda: totalVenda
}
}
var v1 = new VendaAnterior(10.5, 100);
var v2 = new VendaAnteriorEcma6(12.5, 50);
console.log('Total Venda (v1): ' + v1.totalVenda());
console.log('Total Venda (v2): ' + v2.totalVenda());
</script>
Ecma6 Referência: ECMAScript 6 — New Features: Overview & Comparison
1 curtida