0

私は、ユーザーが選択した小さな断片から GUI を組み立てて GUI を作成するツールに取り組んでいます。これらの小さな部分は、プログラムで作成された html 要素です。

効率を念頭に置いて、プレーンな JavaScript オブジェクトができるように、これらの要素がプロトタイプを共有できるかどうか疑問に思いました。

これは私の拡張方法です:

var extend = function(o){
    var F = function(){};
    F.prototype = o;
    var x = new F();
    x._proto_ = o;
    return x;
};

これは Object.create() と同じで、Mozilla のようにプロトタイプへの参照を保持するだけです。

したがって、これはプレーンなオブジェクトに対してはうまく機能します:

var a = { x: 0, y: 1};
var b = extend(a);
b.y; // 1 

しかし、実際のhtml要素に使用しようとすると失敗します:

var a = document.createElement("div");
a.whatever = //whatever..
var b = extend(a);
document.body.appendChild(b); //this throws an error.

エラーは次のとおりです。「ノードが存在しないコンテキストでノードを参照しようとしました。」

どうしたんだ?html要素でこれを行うことはできませんか?

どんな考えでも大歓迎です..

4

1 に答える 1

1

b呼び出し後に取得extendする は DOM 要素ではなく、プロトタイプで DOM 要素への参照を保持するオブジェクトであるためです。

x.prototype = o;PSラインインextend機能が本当に必要ですか?

于 2012-12-30T10:45:11.780 に答える