0

JavaScript で次のユースケースを実現するための最良の方法を探しています (可能であれば)。

「モデル」エンティティを構成したいとしましょう。このような構成は、スキーマ定義または検証ルールである可能性があります。構成は「ModelDef」の範囲内に保持されます。

var ModelDef = new Model({ schema : { name : 'String' }, validation : {} });

次に、以前に定義された「ModelDef」のインスタンスを初期化できるようにしたいと考えています。今回は、いくつかの属性とその値を提供するかもしれません。

var ModelInstance = new ModelDef({ attribute1 : value1, attribute2 : value2 });

ここまでは順調ですね。ポイントは、どちらの場合も「new」キーワードを使用したいということです。前者(「ModelDef」)のケースは簡単な方法で実現できますが、最初の呼び出しに基づいて構築された2番目の呼び出しも機能するかどうか疑問に思っています。

4

1 に答える 1

1

JavaScript にはprivateまたは変数のようなものがないため、そうではありません。protectedキーワードを使用すると、this他のインスタンスがアクセスできます。ただし、キーワードを使用して、 (ドット)アクセサーではアクセスできないスコープvarを作成できます。さらに、元のコンストラクターが以下の厄介な例のようにコンストラクターを返さない限り、コンストラクターの実行されたインスタンスを変数に割り当てて、その新しいインスタンスを作成することはできません。private.

function what(c){
  this.a = function(){
    return function(){
      this.b = c;
    }
  }
}
var nasty = new what('test').a();
var testit = new nasty().b;
console.log(testit);
于 2013-10-02T00:05:53.707 に答える