2012-09-06 12 views
5

मैं उद्देश्य जावास्क्रिप्ट के लिए नया हूं, यहां तक ​​कि मेरे पास जावास्क्रिप्ट में एक अच्छी मात्रा में अनुभव था। मैं कैलकुलेशन बंद करने के लिए अपने पैरामीटर कैसे पास करूं?गुजरने वाले पैरामीटर: उद्देश्य जावास्क्रिप्ट

var calc = (function() { 
    var a = 5; 
    var b = 0; 
    return { 
     add: function() { 
      return a + b; 
     }, 
     subtract: function() { 
      return a - b; 
     }, 
     multiply: function() { 
      return a * b; 
     }, 
     divide: function() { 
      if (b != 0) return a/b 
      else { 
       alert('division by zero'); 
       return false; 
      } 
     } 
    } 
})();​ 

    console.log(calc.divide()); 

मैं कैलकुलेटर (calc.multiply (10,20)) के पैरामीटर को पास करना चाहता हूं;

अग्रिम धन्यवाद ..

+1

क्या मैं बस कह सकता हूं: 'इंडेंटेशन एक अद्भुत बात है'? –

+0

मेरा मानना ​​है कि मानक शून्य से विभाजन के मामलों में 'NaN' वापस करना है। लेकिन, यदि आप स्पष्ट सत्यापन का इरादा रखते हैं, तो मुझे लगता है कि अलर्ट ठीक है। – Shmiddty

उत्तर

2

यहाँ एक सरल तरीका है!

var calc = function(a,b) { 
    return { 
     add: function() { 
      return a + b; 
     }, 
     subtract: function() { 
      return a - b; 
     }, 
     multiply: function() { 
      return a * b; 
     }, 
     divide: function() { 
      if (b != 0) return a/b 
      else { 
       alert('division by zero'); 
       return false; 
      } 
     } 
    } 
}; 

//console.log(calc.divide()); 
//I want to pass the parameters to calc like (calc.multiply(10,20)); 

calc(10,20).multiply(); 

अन्यथा, आप प्रत्येक विधि आधुनिकीकरण के लिए औपचारिक तर्क को स्वीकार करना होगा ...

2

अपने कॉल विधि calc.multiply(a, b) के अनुसार: इस तरह होना चाहिए:

var calc = (function() { 
    return { 
     add: function(a, b) { 
      return a + b; 
     }, 
     subtract: function(a, b) { 
      return a - b; 
     }, 
     multiply: function(a, b) { 
      return a * b; 
     }, 
     divide: function(a, b) { 
      if (b != 0) return a/b 
      else { 
       alert('division by zero'); 
       return false; 
      } 
     } 
    } 
})(); 

console.log(calc.divide(20, 2)); 
+0

आईआईएफई की आवश्यकता है? मैं नहीं कहूंगा। – Bergi

0

आप इस तरह मतलब है:

var calc = (function() { 
    var a = 5; 
    var b = 0; 
    return { 
     add: function() { 
      return a + b; 
     }, 
     subtract: function() { 
      return a - b; 
     }, 
     multiply: function() { 
      return a * b; 
     }, 
     divide: function(n, d) { 
      if (n != 0) return n/d 
      else { 
       alert('division by zero'); 
       return false; 
      } 
     } 
    } 
})(); 

alert(calc.divide(3, 4));​ 
0

नीचे कोड आप के लिए काम करना चाहिए:

var calc = (function() { 
    var a = 5; 
    var b = 0; 

    return { 
     add: function(a, b) { 
      return a + b; 
     }, 
     subtract: function(a, b) { 
      return a - b; 
     }, 
     multiply: function(a, b) { 
      return a * b; 
     }, 
     divide: function(a, b) { 
      if (b !== 0) return a/b; 
      else { 
       alert('division by zero'); 
       return false; 
      } 
     } 
    }; 
})(); 

console.log(calc.multiply(10, 10)); 

मेरे द्वारा बनाए गए संपादन प्रत्येक लौटे functi पर a और b पैरामीटर सेट कर रहे थे divide फ़ंक्शन पर इसे सख्त बनाकर शून्य से अधिक सुरक्षित बनाने के लिए अपनी तुलना करना।

उम्मीद है कि इससे मदद मिलती है।

+2

कैल्क जावास्क्रिप्ट कन्स्ट्रक्टर नहीं है - यह इसके बजाय मॉड्यूल पैटर्न का उपयोग करता है। अपरकेस फ़ंक्शन नाम या नया कीवर्ड की आवश्यकता नहीं है। यह एक सिंगलटन के रूप में 'जैसा है' काम करेगा। –

+0

सहमत हुए। कोड तय कर दिया गया है। – Travis

0
var calc = (function() { 
    return { 
     add: function(a, b) { 
      return a + b; 
     }, 
     subtract: function(a, b) { 
      return a - b; 
     }, 
     multiply: function(a, b) { 
      return a * b; 
     }, 
     divide: function(a, b) { 
      if (b != 0) return a/b 
      else { 
       alert('division by zero'); 
       return false; 
      } 
     } 
    } 
})();​ 

हालांकि मैं एक त्रुटि फेंकने के लिए अपनी चेतावनी बदलने पर विचार करता हूं।

0

आप या तो calc पर पैरामीटर दे सकते हैं, जो किसी ऑब्जेक्ट को दो नंबरों के साथ गणना करने के लिए देता है, या आप calc किसी ऑब्जेक्ट को कुछ ऐसी गणना करने वाले कार्यों के साथ बनाते हैं। calc(10,20).multiply() का उपयोग कर, यह बंद आपके पास पहले से निर्माण किया जाएगा के लिए,

var calc = { 
    add: function(a, b) { 
     return a + b; 
    }, 
    subtract: function(a, b) { 
     return a - b; 
    }, 
    multiply: function(a, b) { 
     return a * b; 
    }, 
    divide: function(a, b) { 
     if (b != 0) return a/b 
     alert('division by zero'); 
     return false; 
    } 
};​ 

अन्यथा, लेकिन दो स्थानीय स्थिरांक के बजाय मानकों के साथ: आपकी आवश्यकता calc.multiply(10,20) दूसरा समाधान के लिए है

function calc(a, b) { 
    return { 
     add: function() { 
      return a + b; 
     }, 
     subtract: function() { 
      return a - b; 
     }, 
     multiply: function() { 
      return a * b; 
     }, 
     divide: function() { 
      if (b != 0) return a/b 
      alert('division by zero'); 
      return false; 
     } 
    }; 
} 
1
var calc = function(a,b) { 
    return { 
     add: function() { 
      return a + b; 
     }, 
     subtract: function() { 
      return a - b; 
     }, 
     multiply: function() { 
      return a * b; 
     }, 
     divide: function() { 
      if (b != 0) return a/b 
      else { 
       alert('division by zero'); 
       return false; 
      } 
     } 
    } 
}; 
संबंधित मुद्दे