5

私はJavascriptを初めて使用し、現在勉強しています...

var person = function() {
    this.name = "name"
};

var person2 = function() {
    var obj = {};
    obj.name = "name";
    return obj;
};

上記の 2 つの関数があるとします。どちらの関数を使ってもオブジェクトを作成できるようです。例えば)

var p = new person();
var p2 = new person2();

私の質問は: person と person2 の違いは何ですか? それらはまったく同じですか?そうでない場合、どちらがより好ましい使用方法ですか?

ありがとう

4

2 に答える 2

2

オブジェクトを作成する通常の方法は最初の方法です。

2 番目の方法では、2 つのオブジェクトが作成され、1 つが破棄されます。最初のメソッドと同様に、関数が呼び出される前に 1 つのオブジェクトが作成されますが、関数が別のオブジェクトを返すため、最初のオブジェクトは破棄され、返されたオブジェクトが代わりに使用されます。

これらの方法の重要な違いは、2 番目の方法ではプロトタイプを使用できないことです。関数のプロトタイプに入れたものはすべてオブジェクトに適用され、最終的に破棄されます。

于 2013-08-11T23:14:43.267 に答える
1

違いは、関数の使用方法にあります。

最初のものはコンストラクターとして使用することを意図しthisており、新しく作成されたオブジェクトに設定されます。new次のように、 operator と組み合わせて使用​​することを意図しています。

var bill = new person(); 

これは、典型的な OOP 言語の通常のコンストラクターと同じです。


2 番目のものは、通常の関数 ( なしnew) として使用することを目的としています。たとえば、次のようになります。

var bill = person(); 

このオブジェクト作成方法は、ビルダー パターンと組み合わせて使用​​できます。

于 2013-08-11T23:17:02.997 に答える