データ型を作成してその動作を公開しているとします。Javascript:新しいデータ型を定義する方法のガイドラインは何ですか?
&新機能:
// define new data type var CustomDataType= function(){ this.a='whatever'; this.doX= function(){/*some code*/}; } // create a new instance of our custom data type var obj= new customDataType();
オブジェクトリテラル& Object.create:
// define new data type var customDataType = { a: 'whatever', doX: function(){/*some code*/} } // create a new instance of our custom data type var obj= Object.create(customDataType);
-
あなたは、いくつかのあなたが使用する際の例を与えることができます
あなたを構築する機能Rオブジェクト:
function customDataTypeFactory(options){ return { a: 'whatever', doX: function(){/*some code*/} } }; // create a new instance of our custom data type var obj= customDataTypeFactory(options);
私は、これがために、重複を標識することができ感じる:Object.create
対new
が、私の主な関心が優れている1議論にではなく、どこ1がすべき具体的な使用例があるかどうかを知るために他のものより優先する。
私は、関連する質問やCrockfordの本:Javascript:The good partsに関する多くの記事を読んでいます。これまでのところ、私はそれが優先事項であると結論づけました。Crockfordのアドバイスは、私と一緒に私にたくさんの響きを与えます。「危険で不必要な機能を避けてみてください...」私はnew
について話しています。
あなたの最初のバージョンと3番目のバージョンでは、新しいオブジェクトにプロパティを直接配置します。 2番目のバージョンでは、オブジェクトはプロパティを継承します。あなたの質問に具体的な答えがあるのかどうかわかりません。最初のものは 'new'を使って呼び出すとコンストラクタを使います。そして' instanceof'はそのオブジェクトを識別するために働きます。3つ目は 'new'の使用を必要としませんが、' instanceof'はそれほど有用ではありません。もう1つはプロパティを継承します。そのように複数のオブジェクトを作成すると、すべてのデータが共有され、すべてのオブジェクトは継承されたオブジェクトの更新を観察します。 –
... Crockfordの危険警告にあまり気をつけないでください。彼は少し心配していると思う。私はそれをすべて取り込みますが、塩の穀物でそれを取ることを意味します。 –
最後の2つのスニペットの 'this.doX ='は 'doX:'でなければなりません –