このスレッドにスーパー後半..しかし、私が行う必要がある重要な違いは、コンストラクタだけで機能している一方で、new演算子は、関数を呼び出し、に有用であることができ、その結果のオブジェクトをキャプチャしていることだと思いますダイナミックな環境。状況によっては、コンストラクタの実行中にプロパティやメソッドを参照することもできますが、これは有用であるかもしれません。もしあなたがセットのプロトタイプを持っていることにもっと関心がありますが、オブジェクトそのものが静的ではない場合、Object.createはより洗練された選択肢になります。 。
いくつかの簡単な例..
var Foo = function(element) {
this.elem = element;
$(this.elem).css('color', 'blue');
// using the new operator here gives access to this.elem
// immediately after that declaration is made, thus providing
// a comfortable dynamic system to work with
}
var bar = new Foo(someElem);
に並置として..
var foo = {
elem : element, // assume elem exists
$(this.elem).css('color', 'blue')// in the lexical scope
}
var bar = Object.create(foo);
// This.elem does not exist until the object is returned now
// and the .css method call will not execute
あなたが別の簡単な内訳として、他の上で1つを使用したいと思う理由を少し明確にする必要があります。..
ダイナミックオブジェクトを気にして、プロトタイプチェーンについて気にしないときは、Newを使用してください。
動的であることを気にする必要がなく、明示的なプロトタイプチェーンを持つことについては、Object.createを使用してください。 Object.createで作成されたオブジェクトも、init
というメソッドを使用して動的に構築できることに注意してください。このメソッドをビルドして、必要に応じてプロパティを割り当て、新しく返されたオブジェクトで呼び出すことができます。
それぞれのアプローチには不調和がありますが、私の考えでは、そのユースケースはかなり異なっています。しかし、ほとんどの場合、動的ではない状況があり、継承の必要性が増してくるため、Object.createを使用している可能性が高くなります。
はこの質問への回答を参照してください。http://stackoverflow.com/questions/4166616/understanding-the-difference-between-オブジェクト作成と新規のsomefunction-in-ja –
これをすべての新しい回答とともに参照してください。http://stackoverflow.com/questions/387707/whats-the-best-way-to-define-a-class -in-javascript –