0

我不确定我的语法是否正确,但由于某种原因,我似乎无法调用我的函数,我的代码是按以下方式设置的;

var MyMethod =
{
    MyFunction1: function(myData)
    {
        /// ...
        MyFunction2: ([myData]);
        return "YES";
    },

    MyFunction2: function(data)
    {
        // ...
        return 'YES';
    },
};

这是调用函数的正确方法吗?Function1 正确执行,但我无法使用该调用执行第二个函数。我也尝试过拥有它MyFunction2(myData)等,但也没有运气。

我还认为,因为我的函数是在 var 中设置的,所以我将 function1 放在 function2 下,但这也不起作用。

知道我在这里做错了什么吗?

4

4 回答 4

3
var MyMethod = {
    MyFunction1: function(myData) {
        MyMethod.MyFunction2([myData]);
        return 'YES';
    },
    MyFunction2: function(data) {
        // whatever ...
        return 'YES';
    }
};

您也可以潜在地使用this.MyFunction2([myData]),但MyFunction1不能保证使用MyMethodas this,特别是如果您正在使用call()apply()在任何地方使用。

于 2013-09-05T05:49:51.863 回答
2
var MyMethod ={
MyFunction1: function(myData)
    {
        /// ...
       return  this.MyFunction2([myData]);
    },

MyFunction2: function(data)
    {
        // ...
        return data;
    },
};
var res = MyMethod.MyFunction1('a');
alert(res);
于 2013-09-05T05:52:37.863 回答
1

该方法不是全局的,它是对象的成员,所以需要使用this来访问它,而冒号不是标识符的一部分:

this.MyFunction2([myData]);
于 2013-09-05T05:55:43.600 回答
-1
var MyMethod = {

    MyFunction1: function (myData) {
        /// ...
       return  this.MyFunction2([myData]);

    },

    MyFunction2: function (data) {
        // ...
       return data;
    },
};
  • 在这里,您有一个对象Mymethod,该对象具有Myfunction1其属性,并且function您将其分配为其值。
  • 因此,当您想要访问某个属性的某个值时,它应该始终采用以下方式:

MyObject.Property//如同Mymethod.MyFunction2(param)

在了解语法之前,我想你应该知道对象、属性和方法的含义是什么:

对象:对象是具有属性的事物。属性具有名称和值。名称始终是字符串(尽管我们可以在大多数情况下不使用引号来编写它们),并且值可以是 JavaScript 支持的任何内容:数字、字符串、布尔值、null、未定义或对对象的引用。

property:只是一个属于对象的变量。变量本身不是属性。属性和变量可以保存任何类型的数据。

方法:当一个属性包含一个函数时,它被称为方法。

最简单的理解方法是举例:

var a = {
    b: function () {some code}
    };

    a //is an object
    b //is property of a     aka b is a method since it holds a function as its value.
    function () { //some code}//is property value aka value of b.
于 2013-09-05T05:51:15.747 回答