Javascript 在使用prototype属性的函数内调用函数

Javascript 在使用prototype属性的函数内调用函数,javascript,function,prototype,Javascript,Function,Prototype,我正在创建此节点 function Node ( name, level, parent ) { this.name = name; this.level = level; this.children = []; this.parent = parent; this.id = this.createId(); } 当我引用this.name,this.level,this.parent和this.children时,我所做的函数中的一切都很好。当我尝试引用这个.id时,我一

我正在创建此节点

function Node ( name, level, parent ) {
  this.name = name;
  this.level = level;
  this.children = [];
  this.parent = parent;
  this.id = this.createId();
}
当我引用
this.name
this.level
this.parent
this.children
时,我所做的函数中的一切都很好。当我尝试引用
这个.id
时,我一无所获

这是我设置此.id的函数

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

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

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;
        }

你能展示一下你是如何调用它的吗?你是如何创建节点的?您确定
parent
不是
undefined
如果未定义,则在引用
p.name
时会出现脚本错误。另外,为什么要从
createId()
方法开始?为什么不在你的构造函数中简单地设置
this.id=parent.name
?@Alberto Zaccagni我正在调用的是其他人提到的节点函数,似乎这个问题可能是在你试图使用这个代码的方式上。这是一个有效的方法。
这个
节点内。prototype.createId()
引用了与
self
相同的对象,因此
self
是完全冗余的。