从同一个var中调用一个函数

时间:2013-09-05 05:42:17

标签: javascript function

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

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

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

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

我也认为因为我的函数是在var中设置的,所以我把function1放在function2下面但是也没有用。

任何想法都是我在这里做错了吗?

4 个答案:

答案 0 :(得分:3)

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

您也可以使用this.MyFunction2([myData])但是,MyFunction1的执行无法保证将MyMethod用作this,尤其是在使用call()的情况下或apply()任何地方。

答案 1 :(得分:2)

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

MyFunction2: function(data)
    {
        // ...
        return data;
    },
};
var res = MyMethod.MyFunction1('a');
alert(res);

答案 2 :(得分:1)

该方法不是全局的,它是对象的成员,因此您需要使用this来访问它,并且冒号不是标识符的一部分:

this.MyFunction2([myData]);

答案 3 :(得分:-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,未定义或对象的引用。

属性:只是属于对象的变量。变量本身不是属性。 属性和变量可以包含任何类型的数据。

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

最简单的理解方式是:

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.