我无法将值传递给对象的方法。我希望能够在调用它时将变量传递给对象方法但是我似乎无法弄清楚这是如何完成的。
注意:我需要传递这些值byRef但是我使用字符串来保持示例简单,在我的实际代码中我传递的是对象。
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"
答案 0 :(得分: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);
}
};
}
这是demo
此外,对于问题的第二部分,bind
用于预先设置函数的此值,并用于咖喱参数。这是设计的,但例如:
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.