2013-03-06 2 views
0

Я новичок в JavaScript, и я знаю, что мой код странный, как я могу это исправить? Кроме того, как я могу вызвать функцию внутри функции? Я хочу преобразовать все значения в число или float и вызвать решение.Как я могу улучшить этот класс JavaScript?

<script type="text/javascript"> 

    function Math(){       

     var firstNumber = document.getElementById("firstnumber"); 
     var secondNumber = document.getElementById("secondnumber"); 

     this.add = function(){   
      var fN = Number(firstNumber.value); 
      var sN = Number(secondNumber.value); 
      return (fN + sN); 
     } 

     this.sub = function(){   
      var fN = Number(firstNumber.value); 
      var sN = Number(secondNumber.value); 
      return (fN - sN); 
     } 

     this.div = function(){   
      var fN = Number(firstNumber.value); 
      var sN = Number(secondNumber.value); 
      return (fN - sN); 
     } 


     this.mul = function(){   
      var fN = Number(firstNumber.value); 
      var sN = Number(secondNumber.value); 
      return (fN * sN); 
     } 

    } 

    var myNewMath = new Math();   

</script> 
+0

мы, вероятно, пропустить HTML часть, чтобы понять, что вы делаете. Это какой-то калькулятор? – Sebas

+1

В чем проблема, с которой вы столкнулись? – benzonico

+4

В JavaScript уже есть имя ['Math'] (https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Math). Не сжимайте его. – kojiro

ответ

1

Код не слишком плохо для новичка, если немного повторы.

Чтобы не усложнять сейчас, я бы, вероятно, сделать что-то вроде этого, чтобы избежать повторных вызовов Number(element.value):

function Calculator() { // NB: not "Math" - that's a standard object     

    var firstNumber = document.getElementById("firstnumber"); 
    var secondNumber = document.getElementById("secondnumber"); 

    function op1() { 
     return Number(firstNumber.value); 
    } 

    function op2() { 
     return Number(secondNumber.value); 
    } 

    this.add = function() {   
     return op1() + op2(); 
    } 

    this.sub = function() { 
     return op1() - op2(); 
    } 

    ... 
} 
+0

+1 Возможно, стоит отметить, что вы хотите использовать 'new' при вызове. –

+0

@MatthewBlancarte OP, похоже, уже знает это. – Alnitak

+0

Ох, крики, я не видел полосу прокрутки на его свалке кода. Вы совершенно правы. :) –