اذهب إلى المحتوى
  • 0

آلة حاسبة قابلة للتطويرJavaScrpit

ابراهيم الخليل سماني

السؤال

السلام عليكم ,

بالإستعانة بالدالة البانية نريد إنشاء آلة حاسبة تحتوي على عمليتي الجمع (+) و الطرح(-),إلا أنها قابلـة للتطوير وذالك بإضافة مختلف العمليات البسيطة مثل الظرب (*) و القسمة (/), الأس (**),يكون الإدخال بالشكل التالي "a + b" أي : المعامل الأول ثم فراغ واحد ثم العامل(+ او - ,*,**,/) ثم المعامل الثاني 

let calc = new Calculator;

alert( calc.calculate("3 + 7") ); // 10

ولإضافة المزيد من اساليب العمليات الى الدالة :

let powerCalc = new Calculator;
powerCalc.addMethod("*", (a, b) => a * b);   //اضافة اسلوب جديد   
powerCalc.addMethod("/", (a, b) => a / b);   //اضافة اسلوب جديد
powerCalc.addMethod("**", (a, b) => a ** b); //اضافة اسلوب جديد

let result = powerCalc.calculate("2 ** 3");
alert( result ); // 8

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

يمكن إضافة اساليب عمليات جديدة إلى الكائن Calculator ببساطة بواسطة الخاصية this.methods.
وذلك لتتمكن من إضافة دوال جديدة للعمليات الأكثر الأكثر تعقيدًا.

ويمكن كتابة الدالة Calculator  على الشكل التالي:

function Calculator() {

  // إضافة العمليات
  this.methods = {
    "-": (a, b) => a - b,
    "+": (a, b) => a + b
  };

  this.calculate = function(str) {

    let split = str.split(' '),  // تحديد الأعداد والنوع العملية
      a = +split[0],
      op = split[1],
      b = +split[2];

    if (!this.methods[op] || isNaN(a) || isNaN(b)) {
      return NaN;
    }

    return this.methods[op](a, b); // إسترجاع العملية
  };

  this.addMethod = function(name, func) {
    this.methods[name] = func; // إضافة العملية إلى الكائن معرفة بإسمها 
  };
}

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...