Javascript 调用其他对象方法

Javascript calling other object method

我有这两个对象:A 和 B。我想从 B 调用 A.something,但不起作用...

A = function()
{
  function something()
  {
     //do something
  }
}

B = function()
{
  A.something();
}

这会引发 "typeError, A.something(); is not a function"...

不要将 A 声明为函数本身,将其声明为对象:

A = {}

然后在里面放置 something 作为你的函数:

A = {
    something: function() {
        //do something
    }
}

您现在可以致电 A.something()

您当前的代码试图将 A 用作函数时的对象。您将需要调用函数 A(),但其 something 方法将 仍然 不可用(因为它未公开)。

如果你想让 A 成为一个对象,你可以使用这样的对象字面量:

A = {
  something: function()
  {
     //do something
  }
}

B = function()
{
  A.something();
}

或者对于更 经典的 外观的方法,您可以使用 new:

function A()
{
  this.something()
  {
     //do something
  }
}

B = function()
{
  var a = new A();
  a.something();
}

还有更多方法。您可以使用 Object.create 或使用更 功能 的方法,方法是在 A 函数中返回一个对象。

首先,要在 javascript 中创建一个对象,您必须像这样定义 class A(简单的方法,不使用原型):

A = function()
{ 
  return {
    something = function()
    {
       //do something
    }
  }
}

然后通过调用 var object = A() 创建您的对象。

所以你的代码最后应该是这样的:

A = function()
{ 
  return {
    something = function()
    {
       //do something
    }
  }
}

B = function()
{
  var aObject = A();
  aObject.something();
}