1

次の設定を検討してください。

function makeObj(a){
   this.foo = 'bar';
   this.prototype = a;
}

b = makeObj(document.getElementById('foo'));
document.getElementById('bar').appendChild(b);

これはエラーになります:

階層内の指定されたポイントにノードを挿入できません" コード: "3

なんでそうなの?オブジェクトbには、プロトタイプとして有効な要素があります。それはうまくいったはずではありませんか?

4

1 に答える 1

4

ここにはいくつかの問題があります。

まずmakeObj()、新しいオブジェクトをまったく作成していません。これは単なる関数呼び出しでありthis、その関数呼び出しではオブジェクトを参照している可能性がありwindowます。実際に新しい JavaScript オブジェクトを作成するにmakeObj()は、演算子を使用する必要があります。new

次に、通常の JavaScript オブジェクトではなく、DOM オブジェクトのみを DOM に追加できます。

第 3 に、DOM オブジェクトを別のオブジェクトのプロトタイプに割り当てるだけでは、その別のオブジェクトが突然 DOM オブジェクトになるわけではありません。DOM オブジェクトが必要な場合は、DOM オブジェクトを作成するためcreateElement()の文書化された方法などを使用して DOM オブジェクトを作成する必要があります。

あなたが実際に達成しようとしていることについて詳しく説明していただければ、さらにアドバイスできます。

于 2012-01-07T09:36:41.937 に答える