从另一个JavaScript内部调用一个函数的属性

时间:2018-12-06 04:46:22

标签: javascript

我正在使用函数作为类的表示形式。

function ClassOne()
{
  this.doFunc = function() {
    console.log("doFunc output");
  }
}

function ClassTwo()
{
  this.one = ClassOne();
  console.log(this.one); // == undefined ???

  this.init = function() {
    this.one.doFunc();
  }

  this,init();
}

ClassTwo();

但是我正在努力在另一个函数中使用一个函数。

例如,上面的代码返回“无法读取未定义的属性'doFunc'”

这是为什么。一个==未定义?

1 个答案:

答案 0 :(得分:2)

如果您在函数内部分配了this的属性,通常表明该函数打算与new一起用作构造函数,例如:

this.one = new ClassOne();

否则,如果函数不返回任何内容……那么,什么也不会返回(=> undefined

function ClassOne()
{
  this.doFunc = function() {
    console.log("doFunc output");
  }
}

function ClassTwo()
{
  this.one = new ClassOne();
  console.log(this.one);

  this.init = function() {
    this.one.doFunc();
  }

  this.init();
}

ClassTwo();

或者,您可以让ClassOne显式地返回带有doFunc属性的对象,从而可以在没有new的情况下调用该对象:

function ClassOne()
{
  return {
    doFunc() {
      console.log("doFunc output");
    }
  }
}

function ClassOne() {
  return {
    doFunc() {
      console.log("doFunc output");
    }
  }
}

function ClassTwo() {
  this.one = ClassOne();
  console.log(this.one);

  this.init = function() {
    this.one.doFunc();
  }

  this.init();
}

ClassTwo();