javascript面向对象的函数内部调用函数或调用函数insede var

yoz*_*ama 0 javascript oop jquery html5

我试着理解javascript现在我真正想要实现的是这样的:

var data = Data.GetData();//with or without parameter Data.GetData(x)
//or
var data = Data.Row.GetData();
Run Code Online (Sandbox Code Playgroud)

我从其他oop languange的理解我只是创建这样的类:

Class Data{
  public static String GetData()
  {
     return "data";
  }
}
Run Code Online (Sandbox Code Playgroud)

所以我可以打电话:

String data = Data.GetData();
//or
Data _data = new Data();
String x = _data.GetData();
Run Code Online (Sandbox Code Playgroud)

但是如何在JavaScript中?我想是这样的:

function Data(){
  function GetData(){
    retun "data";
  }
}
Run Code Online (Sandbox Code Playgroud)

但它不起作用.:(请帮助我了解oop如何在javascript中使用示例代码:D

Joe*_*ino 5

在javascript中,您可以将函数声明为构造函数(通过确保它不返回任何内容),然后通过使用原型继承将该类的方法应用于其所有实例.

function Data () {
}
Data.prototype.GetData = function () {
  return 'data';
}
Run Code Online (Sandbox Code Playgroud)

你可以像这样使用它:

var data = new Data();
var str = data.GetData();
Run Code Online (Sandbox Code Playgroud)

如果你想要一个静态方法,你可以省略prototype关键字

Data.GetData = function () { return 'data'; }
Run Code Online (Sandbox Code Playgroud)

相反,如果您的Data对象是单个对象,并且您不想重用其任何方法和成员,则只需将其声明为:

var Data = {
  GetData: function () { return 'data'; }
};
Run Code Online (Sandbox Code Playgroud)

然后呢

Data.GetData();
Run Code Online (Sandbox Code Playgroud)