定义一个可以满足以下代码的Calculator类.var cal = new Calculator();// 8. Ca



定义一个类Calculator,它可以满足下面的代码。

var cal = new Calculator(); cal.add(3, 5);// 8 cal.add([3, 5]);// 8

我的代码呢?

function Calculator(){
   this.p1=p1;
   this.p2=p2;
   this.add =function(){
    return this.p1+this.p2;   
    }
}
var cal = new Calculator();
console.log(cal.add(3, 5));

它不能工作

您可以为方法add实现一些参数。

function Calculator(){
    this.add = function (p1, p2) {
        return p1 + p2;   
    }
}
var cal = new Calculator();
console.log(cal.add(3, 5));

或者使用一个输入方法,一个堆栈和一个加法方法。

function Calculator() {
    this.stack = [];
}
Calculator.prototype.input = function (value) {
    this.stack.push(value);
}
Calculator.prototype.add = function () {
    var value = this.stack.pop() + this.stack.pop();
    this.stack.push(value);
    return value;
}
var cal = new Calculator;
cal.input(3);
cal.input(5);
console.log(cal.add());

区别:

console.log(cal.add(3, 5));
                    ^--^---- two arguments
function Calculator(){
                    ^---zero arguments expected
this.add =function(){
                   ^--- zero arguments, again...

表示p1p2未定义。如果你做过任何基本的调试,比如检查浏览器的调试控制台,你就会被告知这一点。

如果你有

function Calculator(p1, p2) {

或类似…

在" Add "方法中为p1, p2和一个可选数组添加参数。您可以使用"arguments"对象来检查是否传入了两个数字或一个数组。我肯定有更好的方法来做这件事,但我不确定。在计算器函数中这样做:

function Calculator() { 
    this.p1;
    this.p2;
    this.add = function(p1, p2, arr) { 
        var args = arguments;
        if(args.length == 2){
       this.p1 = p1; 
          this.p2 = p2; 
        }else{
           this.p1 = args[0][0];
           this.p2 = args[0][1];
        }
        console.log(this.p1 + this.p2);
        return this.p1 + this.p2;
    } 
}; 
var cal = new Calculator;
cal.add(5, 4);  \logs 9
cal.add([5, 4]);. \logs 9

最新更新