对象使用prototype声明的方法如何调用?


var MinStack = function() {
    this.arr = [];
};
MinStack.prototype.push = function(val) {
    var a = this.arr.length;
    this.arr[a] = val;
}
MinStack.prototype.pop = function() {
    var a = this.arr.length - 1;
    var midm = this.arr[a];
    this.arr[a] = undefined;
    this.arr.length = a;
    return 4;
};
MinStack.prototype.top = function( arr) {
    var a = this.arr.length - 1;
    return this.arr[a];
};
MinStack.prototype.getMin = function() {
   var req;
    var mid;
    ****req = MinStack.top;
    MinStack.pop;
    while(this.arr.length > 0){
        mid= MinStack.top;
        MinStack.pop;****
        (mid < req)&&(req = mid)||(mid = 0);
    }
    return req;
};

在getMin中想调用MinStack的两个方法top和pop,但是返回值都是undefined,求教各位大佬哪里出问题了!

你用this.top() this.pop()试试呢?

class MinStack {
   arr =[]
  constructor(arr){
    this.arr = arr;
  }
}
MinStack.prototype.push = function(val) {
  var a = this.arr.length;
  this.arr[a] = val;
}
MinStack.prototype.pop = function() {
  var a = this.arr.length - 1;
  var midm = this.arr[a];
  this.arr[a] = undefined;
  this.arr.length = a;
  return 4;
};
MinStack.prototype.top = function() {
  var a = this.arr.length - 1;
  return this.arr[a];
};
MinStack.prototype.getMin = function() {
  //this.push()
  //this.pop()
  //this.top()
  //this.getMin()
  return Math.min(...this.arr);
};
let ms = new MinStack([1,2,3]);
let min = ms.getMin();
console.log(min);

使用this获取