0

我无法将值传递给对象的方法。当我调用它时,我希望能够将变量传递给对象方法,但是我似乎无法弄清楚这是如何完成的。

注意:我需要通过引用传递这些值,但是我使用字符串来保持示例简单,在我的实际代码中我传递对象。

function makeObject(){
    var object = [ ];
    object.parameter1 = 0;
    object.parameter2 = "text";
    object.method = function (var1, var2){
        console.log(var1+" "+var2);
    }
    return object;
}

var myObject = makeObject();

这就是我期望它的工作方式

myObject.method("hello", "world"); //console returns "undefined undefined"

我后来读到绑定可能是答案,但这似乎不起作用

myObject.method.bind("hello", "world"); //console returns "undefined undefined"

4

1 回答 1

0

您的方法是定义一个数组[],而不是一个对象{}。虽然您应该能够很好地将方法放入数组中,但我认为您正在寻找这样的东西

function makeObject(){
    var obj = { }; //an object literal
    obj.parameter1 = 0;
    obj.parameter2 = "text";
    obj.method = function (var1, var2){
        console.log(var1+" "+var2);
    }
    return obj;
}

另请注意,您可以内联返回​​整个对象:

function makeObject(){
    return {
      parameter1: 0,
      parameter2: "text",
      method: function (var1, var2){
        console.log(var1+" "+var2);
      }
   };
}

这是一个演示


此外,对于您问题的第二部分,bind用于预先设置函数的 this 值,以及 curry 参数。这是人为的,但例如:

var sayIt = function(y){
    this.say(y);
};

var obj = { 
   say: function(val){ console.log(val); } 
};
var sayThat = sayIt.bind(obj, "that");
sayThat();

//logs that to console.

演示

于 2013-03-16T06:03:17.537 回答