私は名前空間として使用しているオブジェクトリテラルを作成しています。オブジェクトリテラル(名前空間)には、コンストラクタ関数MyConstructorが含まれています。私はオブジェクトリテラルの中でMyConstructorのプロトタイプを拡張したいと思います。 MyConstructorの宣言を取り除いてmyNamespaceの宣言の上に置くと、MyConstructorの名前空間がmyNamespaceでなくなってしまいますが、すべてがうまくいきます。この仕事をするにはどうすればいいですか? '。'の
が次のようにコンパイルされません。この行には:オブジェクトの内部にプロトタイプを宣言するリテラル
MyConstructor.prototype = {
下記のオブジェクトリテラルがあります。
おかげで、 マイク
var myNamespace = {
a: 3,
b: function (msg) {
alert(this.a);
},
MyConstructor: function(xx) {
this.x = xx;
},
MyConstructor.prototype = {
a: 1,
b: function() {
return true;
}
}
};
更新:受け入れソリューションが動作します。しかし、私の質問の前提には欠陥がありました。このような状況では、私が知ったように単体テストは難しいので、私はオブジェクトリテラルを全く使用しません。代わりに、私はコンストラクタで作成された通常のオブジェクトを使用し、内部にプライベートオブジェクトを配置します。もう一つのことは、「自己/即座に実行する機能」ですが、いくつかの点では美しく、初心者に説明するのは少し難しいです。
あなたとmeouwは両方とも正確で、あなたは両方ともリアルタイムで回答しましたが、私はあなたの答えの1つだけを選ぶことができました。お二人のおかげです。 – Mike