オブジェクトリテラルのみを使用したいとします(コンストラクターではありません)。私はこのようなオブジェクトを持っています:
var o = {
name : "Jack"
}
プロトタイプである別のオブジェクトを作成する場合は、次のo
構文を使用します。
var u = Object.create( o );
console.log( u.name );//prints Jack
u.name = "Jill";
console.log( u.name );//prints Jill
正常に動作します!問題ない。しかし、実行時に、のプロトタイプを別のものに変更したいと思いu
ます。u
次のようなコンストラクターで作成された場合:
function U () {}
U.prototype.name = "Jack";
var u = new U;
console.log( u.name );//prints Jack
また
function U () {
this.name = "Jack";
}
var u = new U;
console.log( u.name );//prints Jack
しかし、コンストラクターを使用する場合、プロトタイプを完全に変更できます。
function U () {}
//totally changed the prototype object to another object
U.prototype = {
dad : "Adam"
}
var u = new U;
console.log( u.dad );//prints Adam
次に、のプロトタイプに追加したU
ものはすべて、それらの変更後に作成されるすべてのオブジェクトに自動的に追加されます。しかし、オブジェクトリテラルで同じ効果を得るにはどうすればよいですか?
クリーンで短い構文を持つ最も単純なソリューションを提供してください。これを手動で行うことが可能かどうかを知りたいだけです。__proto__
非標準のキーワードも使いたくない。
Stackoverflowを検索しましたが、これは実際には次の質問と重複していません。
(可能であれば)標準的な方法で作成後にプロトタイプを変更したいからです。のようなものObject.setPrototype()
は完璧ですが、その機能は存在しません!オブジェクトリテラルの初期化を使用して作成されたオブジェクトのプロトタイプを簡単に設定する他の方法はありますか?