27

ember.jsオブジェクト メソッドextendとの違いは何createですか?

TLDR: 答えはEmber ガイド: クラスとインスタンス にあります

例でそれを目にすることもあれば、他のことを目にすることもあります。Em.Application.extend({})特に、との違いは何Em.Application.create({})ですか?

アプリをこのように宣言すると、どういう意味になりますか?

Ember.Application.create({
    MyController : Ember.ArrayController.extend({

    }),
});

MyController のインスタンスにアクセスするにはどうすればよいですか? どういうわけか作成する必要がありますか?私はそれにいくつかのデータをプッシュする必要があります。

4

2 に答える 2

31

非常に単純な答えは、extend拡張しているクラスから継承するが、そのクラスのインスタンスを作成しない新しいJSクラスを定義することです。createクラスのインスタンスを作成します。

Em.Applicationオブジェクトインスタンスではなく名前空間を作成しているため、これは特定のケースです。いつしたいのかわかりませんextend Em.Application

App = Em.Application.create(); //新しいEm.Application名前空間があります
App.A = Em.Object.extend(); //新しいクラスApp.Aを定義しました
                            //これはEm.Objectから継承します
var a = App.A.create(); //aにApp.Aのインスタンスが含まれるようになりました。

「命名規則」もお読みになることをお勧めします。

ETA:そして、zaplitnyのコメントで示唆されているように、「EmberObjectsを理解する」。

于 2012-07-25T17:00:05.190 に答える
0

私がほとんど理解していないことから、素人の言葉で言えば、変更されることのない(再開を除く)プロパティを使用して新しいオブジェクトのアイデアを定義し、このオブジェクトのすべてのバージョンに存在する場合に拡張します。

特定の個々の(インスタンスの)オブジェクトを操作するときに作成します。つまり、アクションまたは他の特定のインスタンスによって変更されるプロパティを持つものです。

多くの場合、オブジェクト間の関係を作成するだけでよく、特定の個々のオブジェクトについて話す必要はなく、オブジェクトのアイデアについて話す必要があります。したがって、を拡張するたびに作成する必要はありません。

うまくいけば、私はそれを正しく理解しています。

于 2012-09-04T14:47:23.443 に答える