1

クラスがあり、クラスを使用してオブジェクトの名前をクラス変数としてクラス内から保存したい:

var xxx = new MyClass(); // on the constructor this.name should be init to "xxx"

私はすでにこのアプローチを試しました:

Javascriptでクラスオブジェクトの名前を文字列として取得するには?

しかし、クラスコンストラクター自体からは機能しません。

4

1 に答える 1

2

xxxObjectメモリ内への参照を保持する単なる変数です。そのオブジェクトに名前のプロパティを与えたい場合は、それを引数として渡す必要があります。

var xxx = new MyClass( 'xxx' );

var MyClass = function( name ) {
    this.name = name || undefined;
};

オブジェクトのハッシュを保持して、毎回異なる変数を作成しないようにすることができます。

var myHash = {};

var MyClass = function( name ) {
    if( !name ) throw 'name is required';
    this.name = name;
    myHash[ name ] = this;
    return this;
};
//add static helper
MyClass.create = function( name ) {
    new MyClass( name );
};    

//create a new MyClass
MyClass.create( 'xxx' );

//access it
console.log( myHash.xxx )​;

ここにフィドルがあります:http://jsfiddle.net/x9uCe/

于 2012-08-21T23:14:44.870 に答える