【问题标题】:calling a function inside a function that uses prototype property在使用原型属性的函数内部调用函数
【发布时间】:2013-08-30 17:40:51
【问题描述】:

我正在创建这个节点...

function Node ( name, level, parent ) {
  this.name = name;
  this.level = level;
  this.children = [];
  this.parent = parent;
  this.id = this.createId();
}

当我引用 this.namethis.levelthis.parentthis.children 时,在我创建的函数中一切正常。当我尝试引用this.id 时,我什么也得不到。

这是我设置this.id的函数...

Node.prototype.createId = function () {
  var p = this.parent;
  return p.name;
}

我不知道我在Node函数中是否正确调用它。

【问题讨论】:

  • 你能说明你是怎么称呼它的吗?
  • 你是如何创建节点的?你确定parent 不是undefined? - 如果未定义,引用p.name时会出现脚本错误。
  • 另外,为什么要使用createId() 方法呢?为什么不在构造函数中简单地设置this.id = parent.name
  • @Alberto Zaccagni 我正在调用节点函数
  • 正如其他人所暗示的那样,问题似乎出在您尝试使用此代码的方式上。这是一个有效的slightly modified example

标签: javascript function prototype


【解决方案1】:

this.createId(); 中传递this 关键字作为参数,如下所示

function Node ( name, level, parent ) {
            this.name = name;
            this.level = level;
            this.children = [];
            this.parent = parent;
            this.id = this.createId(this);
        }

然后在节点中执行此操作

Node.prototype.createId = function (self)
        {
            var p = self.parent;
            return p.name;
        }

【讨论】:

  • this inside Node.prototype.createId() 指的是与self 相同的对象,因此self 是完全多余的。
猜你喜欢
  • 1970-01-01
  • 2015-04-06
  • 1970-01-01
  • 2016-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-12
相关资源
最近更新 更多