のプロトタイプに新しいプロパティを追加し、HTMLElement
そのデフォルト値を ' {}
' (空のオブジェクト) にした場合:
Object.defineProperty(HTMLElement.prototype, 'customObject',
{ configurable: true, enumerable: true, writeable: true, value: {} });
今、私は新しいものを作成しますdiv
(これもですHTMLElement
):
var e = document.createElement('div');
customObject
of にプロパティを割り当てますe
。
e.customObject.prop = "bla";
警告すると、目的の値が表示されます。
alert(e.customObject.prop); // Displays 'bla'.
ここで、新しい別のdiv
要素を作成します。
var d = document.createElement('div');
これでプロパティd
が空になるはずですよね?customObject
ただし、警告すると:
alert (d.customObject.prop);
この予期しない結果が得られます。
bla
どうして?新しい要素を作成するとき、HTMLElement.prototype の「空白」のインスタンスが必要ではありませんか?
( jsfiddle: http://jsfiddle.net/5pgr38mb/ )
編集:ディープ クローニング (cloneNode(true)) で動作するソリューションを 探しています。意味 - カスタム オブジェクトが要素またはその子のいずれかにプロパティを持っている場合、その要素または子は複製されたインスタンスでその値を保持します (これは「ネイティブ」HTMLElement 属性の通常の動作です)。