1

このような関数があるとします

function myFunc(a, b, c)
{
    if(a!=undefined) this.a = a;
    if(b!=undefined) this.b = b;
    if(c!=undefined) this.c = c;
}

そして、b の値のみを設定したい場合は、次のようなことができます。

myFunc(undefined, "some Value for b", undefined);

しかし、bの値を設定するためにこのようなことができる方法があるかどうか疑問に思っていました

myFunc(b:"some value for b");

これはおそらく間違っていますが、私の言いたいことがわかるでしょう。未定義の値を渡すことを心配する必要がないように、値とともにプロパティの名前を指定したいと考えています。どうすればいいですか?

また、タイトルを自由に変更してください。この質問を何と呼ぶべきかわかりません。

4

3 に答える 3

4

jsFiddleデモ

確かに、これを使用してください:

function myFunc(options)
{
 if(typeof(options['a']) != "undefined") this.a = options['a'];
 if(typeof(options['b']) != "undefined") this.b = options['b'];
 if(typeof(options['c']) != "undefined") this.c = options['c'];
}

そしてそれを

var func = new myFunc({b:"some value for b"});
console.log(func.b);//"some value for b"
于 2013-03-19T19:07:23.867 に答える
1

はい、オブジェクトリテラルを渡します

function myFunc(options)
{
    if(options.a!=undefined) this.a = options.a;
    if(options.b!=undefined) this.b = options.b;
    if(options.c!=undefined) this.c = options.c;
}

このように電話します

var var1 = new myFunc({b:"some value for b"});

または、より動的で拡張可能な方法(前述のとおり)

function myFunc(obj)
{
    for (var i in obj)
    {
        if(obj.hasOwnProperty(i))
        {
            this[i]=obj[i];
        }
    }
}

var func = new myFunc({b:"some value for b"});
console.log(func.b);//"some value for b"
于 2013-03-19T19:08:59.997 に答える
1

Ojbect を引数として渡すことで、これを実現できます。

var someObject = { a: 'some A value', b: 'some B value' };

myFunc(someObject);

これは非常に一般的な方法です。

たとえば、jQuery はこの構造を頻繁に使用します。

jQuery.animate()のドキュメントを見ると、最初の引数としてプレーン オブジェクトを受け入れることがわかります。

于 2013-03-19T19:10:15.130 に答える