0

標準の DOM 要素よりもいくつかのメソッドを持つカスタム要素を作成しています。これは、Element オブジェクトから継承するものです。

function MyObject(){

    return (Object.create(document.createElement("Mytag"),{
         myfunction:function(){
             return blahblah;
         }
    }));

}//function for creating object ends

function MyObject2(){

    return (Object.create(document.createElement("Mytag2"),{
        myfunction:function(){
            return blahblah;
        }
    }));

}//function for creating second object ends

var a=new MyObject();//statement works fine
var b=new MyObject2();//statement works fine 

これらのオブジェクトの1つを他のオブジェクトの子にしようとすると、何かが機能し、例外がスローされます

a.appendChild(b);
4

2 に答える 2

0

メソッドではなく、プロパティ記述子をに渡す必要がありObject.createます。

function MyObject() {
    return Object.create(document.createElement("Mytag"), {
        myfunction: {
            value: function() {
                 return 'blahblah';
            }
        }
    });
}

これはChromeでうまくいきます:

a = new MyObject();
> HTMLUnknownElement {spellcheck: true, isContentEditable: false, contentEditable:
  "inherit", children: HTMLCollection[0], outerText: ""…}
a.myfunction()
> "blahblah"

ただし、オブジェクトの「タイプ」が正しく設定されていないMyObjectことに注意してください。オブジェクトをDOMに追加しようとしたときに例外がスローされるのを防ぐこともできません:(

于 2013-04-15T19:57:39.770 に答える