【问题标题】:Javascript prototype inheritance not workingJavascript原型继承不起作用
【发布时间】:2013-10-12 05:28:05
【问题描述】:

这不是我正在做的实际项目,而是简单的代码来理解我做错了什么。

我创建了一个名为 NumSelector 的对象,并尝试使用我使用原型继承的方法 validator。我收到错误“验证器未定义”

function NumSelector(num)
{
    if(validator(num))
      console.log("NUmber is positive");
    else
      console.log("Number s negative");
}

NumSelector.prototype.validator = function(num)
{
  if(num>0)
    return true;
  else
    return false;
};

【问题讨论】:

  • @elclanrs 现在说“对象 [object global] 没有方法 'validator'”
  • 你在用new进行实例化,对吧?
  • 我建议你看看一些教程,看这里developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/…
  • 我不明白为什么当我输入 x = new NumSelector(1) 时它会返回完整的代码

标签: javascript object prototype


【解决方案1】:

在 if 条件中使用 this.validator() 而不是 validator()

function NumSelector(num)
{
    if(this.validator(num))
      console.log("NUmber is positive");
    else
      console.log("Number s negative");
}

NumSelector.prototype.validator = function(num)
{
  if(num>0)
    return true;
  else
    return false;
};

【讨论】:

  • 对 - 需要敏锐的眼光才能看到此代码块和 OP 的代码块(if 检查中的 this.validator)之间有一个变化。这需要在答案中指出。也就是说:如果添加 this 可以解决问题,那么这是一个有效的答案。
  • 这是上面提出的,this 就是答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-28
  • 2018-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多