私は、オブジェクトのすべてのインスタンス化に渡されるconfigオブジェクトに影響を与えるために、1つの場所で変更しようとしています。オブジェクトがvar myFoo = new Crayons().foo({color: "red"});
コンストラクタに渡されるオブジェクトのデフォルトプロパティを設定するにはどうすればよいですか?
と私のプロジェクトに初期化されて、私は誰かがに合格しない場合ように、デフォルトを{color: "blue"}
したいのですが
function Crayons(){
return {
foo: ThirdPartyFoo
}
}
次のようにオブジェクトは、グローバルに利用できるようになりますカラー、ブルーが設定されています。
私は
function Crayons(){
var fooWithDefaults = function(){
this = new ThirdPartyFoo(arguments); //this is invalid
this.color = "blue"; //and this would overwrite color if it was set
}
return {
foo: fooWithDefaults
}
}
をやってみました。しかし、私は基本的にthis = new 3rdPartyFoo
を言うjavascriptのコンストラクタを作成する方法がわからないようnew
キーワードは、私を投げています。
私には何が欠けていますか?
'this.color =所与|| "青" ' – Li357
@AndrewL。それは色のために働くが、私はまだオブジェクトを構築する方法を知らない。 – adamdport
まず、 'Crayons'は真のコンストラクタとしてではなく、代わりに工場として実装されています。したがって、 'new'演算子で呼び出す必要はありません。第二に、 'クレヨン'は 'foo'メソッドを持っていません。呼び出された場合、 'ThirdPartyFoo'を参照するプロパティ' foo'を持つオブジェクトを返します。おそらくコンストラクタである可能性があります。あなたの例を少なくとも有効なコードであるものに修正するか、エラーを投げずに実行できるようにしてください( 'var myFoo = new Crayons.foo({color:" red "});') –