定义一个类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...
表示p1
和p2
未定义。如果你做过任何基本的调试,比如检查浏览器的调试控制台,你就会被告知这一点。
如果你有
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