2

これは、私がやろうとしていることの本当に不十分な例です。このコードは機能します。

var Love = {
  name: 'Johnny',
  kiss: function (girl){
    alert(this.name + " kissed " + girl );
  }
};

Love.name = "Chris";
Love.kiss("Becky");

最初に name のプロパティを再割り当てし、次にパラメーターを送信するメソッドを呼び出しました

私が本当にやりたいことは、メソッドを呼び出すときに JSON を使用して "name" プロパティを設定することです。どこかで見たことがあると断言しますが、わかりません。したがって、理想的には、次のようになります。

Love.kiss({
  name: 'Chris'},
  "Becky");

または、このようなものさえあります。

var Love = {
  Guy: 'Johnny',
  Girl: 'Mallory',
  kiss: function (){
    alert(this.Guy + " kissed " + this.girl);
  }
};

Love.kiss({
  Guy: 'Chris',
  Girl; 'Becky'});

繰り返しますが、これは非常にばかげた例ですが、この概念には、私が使用したい特定のアプリケーションがあります。

4

4 に答える 4

2

とにかくオブジェクト リテラル (JSON ではなく!) を関数に渡したいので、それを直接使用してみませんか?

function kiss(obj) {
    alert(obj.Guy + " kissed " + obj.Girl);
}

kiss({
    Guy: 'Chris',
    Girl: 'Becky'
});

なぜLoveオブジェクトを使用するのですか?

于 2012-06-28T03:07:32.030 に答える
2

引数として渡したオブジェクトのキーを実行し、それらをに割り当てますthis

var Love = {
    Guy: 'Johnny',
    Girl: 'Mallory',
    kiss: function(opts) {
        for (var k in opts) {
            this[k] = opts[k];
        }
        alert(this.Guy + " kissed " + this.Girl);
    }
};

Love.kiss({
    Guy: 'Chris',
    Girl: 'Becky'
});​  // -> alert('Chris kissed Becky')

デモを見る

于 2012-06-28T03:07:39.487 に答える
0
var Love = {
  Guy: 'Johnny',
  Girl: 'Mallory',

  kiss: function (obj){
    // if you want default values you can use ||
    this.Guy = obj.Guy || this.Guy;
    this.Girl = obj.Girl || this.Girl;

    alert(this.Guy + " kissed " + this.Girl);

    // or change the code above to the following if you don't want to store new values
    var guy = obj.Guy || this.Guy,
        girl = obj.Girl || this.Girl;

    alert(guy + " kissed " + girl);
  }
};

Love.kiss({
  Guy: 'Chris',
  Girl: 'Becky'
});
于 2012-06-28T03:22:30.087 に答える
0
var Love = {
  Guy: 'Johnny',
  Girl: 'Mallory',
  kiss: function( data ) {
    this.Guy = data.Guy;
    this.Girl = data.Girl;
    alert(this.Guy + " kissed " + this.Girl);
  }
};

Love.kiss({
  Guy: 'Chris',
  Girl: 'Becky'
});

これはあなたが達成しようとしていることですか?

于 2012-06-28T03:06:56.257 に答える