2

私は次のJavascriptを持っています:

function TestModel()
{
        this.name = "Testvalue";
        this.id = 0;
}

var test = new TestModel();
alert(test.name);

コンストラクターを使用せずに異なるパラメーターでオブジェクトを初期化する場合は、次のコードを呼び出す必要があります。

var test = new TestModel();
test.name = "other value";
test.id = 5;
alert(test.name);

私がやりたいことは、C# スタイルに似たものです。

class TestModel
{
    public string name = "Testvalue";
    public int id = 0;
}

TestModel test = new TestModel() { name = "other value", id = 5 };
System.Windows.MessageBox.Show(test.name);

しかし、JavaScriptでそのようなことをしようとすると、うまくいきません。

要するに、コンストラクターを使用せずに1行でオブジェクトを初期化しようとしています。これはJavaScriptで可能ですか?

4

3 に答える 3

3
function TestModel(name, id)
{
  this.name = name || "TestValue";
  this.id = id || 0;
}

var test = new TestModel("Your Name", 4638);
alert(test.name);
于 2012-07-23T07:46:48.657 に答える
2

これは、C# の構文に最もよく似ています。

function TestModel(init)
{
   init = init || {}; 
   this.name = init.name || "Testvalue";
   this.id = init.id || 0;
}

var test1 = new TestModel( { name:'testvalue1',id:1 } );
var test2 = new TestModel( { name:'testvalue2',id:2 } );
于 2012-07-23T08:00:38.173 に答える
1

これは、KooiInc が提供したものと似ていますが、もう少し一般的で、渡された値が正しい型であることを確認するための別のものです....

function TestModel(init) {
    var defaults = {
        name: "Bunyip",
        id: 0
    }
    if (typeof init == 'object') {
        for (var prop in defaults) {
            if (defaults.hasOwnProperty(prop)) {
                if (init.hasOwnProperty(prop) && typeof init[prop] == typeof defaults[prop]) {
                    this[prop] = init[prop];
                } else {
                    this[prop] = defaults[prop];
                }
            }
        }
    } else {
        for (var prop in defaults) {
            if (defaults.hasOwnProperty(prop)) this[prop] = defaults[prop];
        }
    }
    delete defaults;
}

var test1 = new TestModel( { name:'testvalue1',id:1 } );
var test2 = new TestModel( { name:'testvalue2',id:2 } );
于 2012-07-23T08:49:06.273 に答える