覆盖函数删除js

问题描述 投票:0回答:1

我尝试在继承对象中覆盖函数delete,但没有成功。

function Card(name, balans) {
  this.name = name;
  this.balans = balans;
}
Card.prototype.delete = function(money) {
  return this.balans = this.balans - money;
}

function DeditCard(name, balans) {
  this.name = name;
  this.balans = balans;
  delete = function(money) {
    if ((balans - money) > 0) {
      return balans = balans - money;
    } else {
      console.log('error');
      return balans;
    }
  }
}
DeditCard.prototype = Object.create(Card.prototype);
let card0 = new DeditCard("First person", 10);
console.log(card0.balans); //10
card0.delete(80); //must be error
console.log(card0.balans); // must be 10
javascript object
1个回答
0
投票

delete 作用于 DeditCard 应是 DeditCard.prototype.delete,而不是构造函数中的一个局部函数。

而且它需要使用 this.balans,不 balans,就像 Card.prototype.delete.

function Card(name, balans) {
  this.name = name;
  this.balans = balans;
}
Card.prototype.delete = function(money) {
  return this.balans = this.balans - money;
}

function DeditCard(name, balans) {
  this.name = name;
  this.balans = balans;
}
DeditCard.prototype = Object.create(Card.prototype);
DeditCard.prototype.delete = function(money) {
  if ((this.balans - money) > 0) {
    return this.balans = this.balans - money;
  } else {
    console.log('error');
    return this.balans;
  }
}
let card0 = new DeditCard("First person", 10);
console.log(card0.balans); //10
card0.delete(80); //must be error
console.log(card0.balans); // must be 10
© www.soinside.com 2019 - 2024. All rights reserved.