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

السؤال

نشر

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

بالإستعانة بالدالة البانية نريد إنشاء آلة حاسبة تحتوي على عمليتي الجمع (+) و الطرح(-),إلا أنها قابلـة للتطوير وذالك بإضافة مختلف العمليات البسيطة مثل الظرب (*) و القسمة (/), الأس (**),يكون الإدخال بالشكل التالي "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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...