0

次のコードが機能することを期待していました。再帰的ではないクローンが必要でした。

それはしませんでした...

なぜ、そしてそれを回避するために私は何ができますか?

person=new Object();
person.firstname="John";
person2 = new person; //Expected a new person object with firstname john    

"TypeError: object is not a function"

と同じ

person2 = new person()
4

2 に答える 2

3

newJavascriptの演算子が関数に適用され、その関数のプロトタイプチェーンが新しいオブジェクトに適用された新しいオブジェクトが作成されます。オブジェクトに直接適用することはできません。

JavaScriptでオブジェクトのクローンを作成する場合、それは単純なプロセスではありません。可能性のリストについては、この回答を参照してください。JavaScriptオブジェクトを正しく複製するにはどうすればよいですか。。最も簡単な方法は、jQueryと$.extendを使用することです。ただし、一般的なJavascriptソリューションを作成することもできます。特定のタイプのオブジェクトにのみ使用したい場合は、かなり単純な場合があります。

newを正しく使用したい場合は、次のようなコンストラクター関数を作成できます。

var Person = function() {
 this.firstname = "John";
};
var person1 = new Person();
var person2 = new Person();

Personこれにより、互いに独立した2つの新しいオブジェクトが作成されます。

于 2013-03-10T21:56:29.647 に答える
1
var Person = function() {
 this.firstname = 'John';
};

person2 = new Person();

スローされたエラーは、貴重な情報を提供します(確かに、JavaScriptではまれです)。新しい演算子は、関数に適用する場合にのみ使用でき、他のオブジェクトには使用できません。

于 2013-03-10T21:56:38.063 に答える