1

クラスを作成し、SONG()多くのプロパティを定義する場合、渡された引数を使用してそのプロパティを取得するメソッドを作成するにはどうすればよいですか?

function SONG(i) {

    /* properties */
    this.title      = results.title[i];
    this.artist     = results.artist[i];
    this.album      = results.album[i];
    this.info       = results.info[i];

    /* methods */
    this.getstuff = function(stuff){
        console.log(this.stuff); // doesn't work
    }
}

var song1 = new SONG(1);

song1.getstuff(title);  
// how can I have this dynamically 'get' the property passed through as an argument?

どんな助けやアドバイスも大歓迎です!

4

2 に答える 2

1

角括弧表記を使用できます。

this[title]

title変数に含まれている名前のプロパティを取得します。

于 2013-02-06T14:56:58.523 に答える
1

多分これはあなたが望むものです:( JSFiddle

function SONG(i) {
    /* properties */
    this.title      = "My Title";
    this.artist     = "My Artist";
    /* methods */
    this.getstuff = function(stuff){
        if (this.hasOwnProperty(stuff))
            return this[stuff];
        else
            return null;
    }
}

var song1 = new SONG(1);

console.log(song1.getstuff("title"));  
console.log(song1.getstuff("invalid"));  

ただし、ここでは文字列として渡されていることに注意してください"title"。また、要求されているプロパティが実際にあるgetstuffことを検証するためのチェックが必要です。したがって、のチェックが必要です。SONGhasOwnProperty

于 2013-02-06T14:59:03.437 に答える