0

オブジェクトのメソッドに値を渡すのに問題があります。オブジェクトメソッドを呼び出すときに変数をオブジェクトメソッドに渡すことができるようにしたいのですが、これがどのように行われるかがわかりません。

注: これらの値を Ref で渡す必要がありますが、例を単純にするために文字列を使用しています。実際のコードでは、オブジェクトを渡しています。

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"

私は後で bind が答えかもしれないことを読みましたが、これはうまくいかないようです

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

4

1 に答える 1

0

あなたのメソッドは[]object ではなくarray を定義しています{}。メソッドを配列にうまく配置できるはずですが、このようなものが探していると思います

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);
      }
   };
}

ここにデモがあります


また、質問の 2 番目の部分では、関数の this 値を事前に設定し、パラメーターをカレー化するのにも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.

デモ

于 2013-03-16T06:03:17.537 に答える