我现在尝试了解javascript 我真正想要实现的是这样的:
var data = Data.GetData();//with or without parameter Data.GetData(x)
//or
var data = Data.Row.GetData();
我从其他oop languange的理解我只是创建这样的课程:
Class Data{
public static String GetData()
{
return "data";
}
}
所以我可以致电:
String data = Data.GetData();
//or
Data _data = new Data();
String x = _data.GetData();
但是如何在javascript中? 我想是这样的:
function Data(){
function GetData(){
retun "data";
}
}
但它不起作用。 :( 请帮助我了解oop如何在javascript中进行此操作,例如代码:D
答案 0 :(得分:5)
在javascript中,您可以将函数声明为构造函数(通过确保它不返回任何内容),然后通过使用原型继承将该类的方法应用于其所有实例。
function Data () {
}
Data.prototype.GetData = function () {
return 'data';
}
然后您可以像这样使用它:
var data = new Data();
var str = data.GetData();
如果你想要一个静态方法,你可以省略原型关键字
Data.GetData = function () { return 'data'; }
如果您的Data对象是单个对象,并且您不想重用其任何方法和成员,则只需将其声明为:
var Data = {
GetData: function () { return 'data'; }
};
然后再做
Data.GetData();
答案 1 :(得分:2)
Data
是一个简单的Object
,GetData
是一个功能为值的键
var Data = {
GetData: function() {
return "data";
}
}
在第二种情况下:
var Data = {
Row: {
GetData: function() {
return "data";
}
}
}
答案 2 :(得分:1)
JavaScript中的函数是第一类对象。 “方法”只是指向函数的对象的属性。通过属性引用调用函数的行为有点特殊,因为它在函数调用中设置this
的含义(this
设置为属性对象)。与您可能习惯的其他语言不同,这是一个运行时事物,由函数的调用方式决定,而不是由函数声明/定义的位置决定的编译时事件。
能够做到这一点:
var data = Data.GetData();
...你需要有一个对象Data
,它有一个名为GetData
的属性,它引用一个函数。您可以像这样构建:
var Data = {
GetData: function() {
// ...your code here...
}
};
......或其他几种方式,例如:
var Data = {};
Data.GetData = function() {
// ...your code here...
};
...或
var Data = {};
Data.GetData = GetData;
function GetData() {
// ...your code here...
}
更多关于我的博客:Mythical methods
答案 3 :(得分:1)
试试这样:
function Data() {
this.getData = function() {
return "data";
};
this.ROW = {
getData : function() {
return "Row Data";
}
}
}
您从新的数据实例调用该函数:
new Data().getData();
OR
new Data().ROW.getData();
这将返回数据。