21

jquery で object.create を使用して日付ドロップダウンを作成するプラグインで問題が発生しました。IE 8 で、次のエラーがスローされていることに気付きました。

SCRIPT438: Object doesn't support property or method 'create'

コードは次のとおりです。

var dropdateobj = Object.create(dropdatefuncs);
dropdateobj.create(options, this);
$.data(this, 'dropdate', dropdateobj);

IE8 以上のクロス ブラウザーと互換性があるための適切な回避策は何ですか?

前もって感謝します!

4

3 に答える 3

20

これを提供するシムがいくつかあります

ただし、すべての ES5 より前のブラウザーでは実行できない、列挙不可能なプロパティまたはゲッターとセッターを使用したプロパティを作成できるため、完全にシミングすることはできないことに注意してください。(独自の構文を使用して、ES5 より前のブラウザーでゲッターとセッターを実行できますが、IE8 では実行できないと思います。) 疑似シムのみが可能です。Object.create

ただし、引用したユースケースには疑似シムで十分です。

完全を期すために、シミングできる部分の単純なバージョンを次に示します。

if (!Object.create) {
    Object.create = function(proto, props) {
        if (typeof props !== "undefined") {
            throw "The multiple-argument version of Object.create is not provided by this browser and cannot be shimmed.";
        }
        function ctor() { }
        ctor.prototype = proto;
        return new ctor();
    };
}
于 2013-08-02T15:09:15.440 に答える