では、ここで最初の質問です。お手柔らかにお願いします。
私は、Web プログラミング以外のさまざまなバックグラウンドを持つ他の数人の開発者と、かなり JavaScript を多用するプロジェクトに取り組んでおり、JavaScript 疑似クラスでパブリックおよびプライベート メソッドとプロパティを純粋に優れたコーディング プラクティスとして使用することにしました (つまり、実際の利点やセキュリティがないことを知っています)
public と private を実行するいくつかの異なる方法 (つまり、ローカル スコープの変数と関数を特権メソッドで使用してパブリックに使用する) をいじりました。パブリック インターフェイス、効果的に他のすべてを非表示にします。
次に例を示します。
function MyObject()
{
var _this = this;
this._privateProperty = 'somevalue';
this._privateMethod = function()
{
// Do Something
}
this.public =
{
publicProperty : _this._privateProperty,
publicMethod : function(){ return _this.privateMethod() }
}
return this.public;
}
Chrome でインスタンス化してログインすると、次のようになります。
var obj = new MyObject();
console.log(obj);
出力:
> Object
> publicMethod: function (){ return _this.privateMethod() }
> publicProperty: "somevalue"
>__proto__: Object
> Object
ここで私の質問: コンストラクターからパブリック インターフェイスを新しいオブジェクトとして返すため、console.log を実行すると、それ自体が次のように識別されることに気付くでしょう> MyObject
。
理想的には、後者をデバッグ目的で表示したいと考えており、コンストラクターの「MyObject」名に でアクセスする方法は知っていますが、_this.constructor.name
そのように認識されるように設定する方法がわかりません。
これを手動で設定する方法を知っている人はいますか?
注:
これはある意味で JavaScript の慣習を荒らし、丸い穴に四角いペグをはめ込もうとしているのは承知していますが、私たちがやろうとしていることを達成するための非常に明白で読みやすい方法であることがわかりました。別のデザインでこれを実現する方法についての提案は受け付けていますが、最終的には現在のデザインに合った答えを探しています。